//#include<pic18f45k20.h>
#include <pic18.h>
#define uchar unsigned char
#define uint unsigned int
__CONFIG(1, IESOEN&FCMDIS&RCIO );
__CONFIG(2, WDTDIS&BORV27&BOREN_XSLP&PWRTEN );
//__CONFIG(3, &&& );
uint Cnt;
uint get_adc(uchar HL);
void delay(uint c)
{
uint a,b;
for(a=c;a>0;a--)
for(b=110;b>0;b--);
}
void init()
{
OSCCON = 0x57; //内部振荡器 4M 晶振
TRISD = 0x00;
PORTD = 0xff;
T0CON = 0x80;
TMR0IE = 1;
TMR0L=(65536-1000)%256;
TMR0H=(65536-1000)/256;
TRISA = 0x01;
ANSEL = 0x01;
ADCON0 = 0x01;
ADCON1 = 0;
ADCON2 = 0xa9;
// delay(5);
// GODONE = 1;
TRISC=0x80;
TXSTA=0x24;
RCSTA=0x90;//接收状态和控制寄存器
SPBRG=25; //波特率设置为9600 25 //119200 12
GIE=1; //开放全局中断
PEIE=1; //使能外部中断
RCIE=1;
}
void main()
{
uint Dtmp,ADCNum;
uchar i,num[4];
init();
while(1)
{
if(Cnt<500)
{
PORTD = 0x55;
}
else if(Cnt<1000)
{
PORTD = 0xaa;
}
else
{
Cnt = 0;
ADCNum = get_adc(0x01);
num[0]=ADCNum/1000;
num[1]=ADCNum%1000/100;
num[2]=ADCNum%100/10;
num[3]=ADCNum%10;
for(i=0;i<4;i++)
{
num[i]=num[i]+0x30;
TXREG=num[i];
while(!TRMT);
num[i]=0;
}
TXREG=' ';
while(!TRMT);
}
}
}
uint get_adc(uchar HL)
{
uint adc_val;
ADCON0=HL;//0x81;
GODONE = 1;
while(GODONE);
ADIF = 0;
adc_val=ADRESH;
adc_val = adc_val<<8 | ADRESL;
return adc_val;
}
void interrupt com()
{
if(TMR0IF)
{
TMR0IF=0;
TMR0L=(65536-1000)%256;
TMR0H=(65536-1000)/256;
Cnt++;
}
if(RCIE&&RCIF) //判断是否为串口接收中断
{
TXREG=RCREG; //把接收到的数据发送回去
while(!TRMT);
}
}
PIC18F单片机ADC+UART+TIMER
4星 · 超过85%的资源 需积分: 10 47 浏览量
2011-03-08
16:46:16
上传
评论
收藏 56KB RAR 举报
garysi175744595
- 粉丝: 0
- 资源: 2
最新资源
- Screenshot_20240427_031602.jpg
- 网页PDF_2024年04月26日 23-46-14_QQ浏览器网页保存_QQ浏览器转格式(6).docx
- 直接插入排序,冒泡排序,直接选择排序.zip
- 在排序2的基础上,再次对快排进行优化,其次增加快排非递归,归并排序,归并排序非递归版.zip
- 实现了7种排序算法.三种复杂度排序.三种nlogn复杂度排序(堆排序,归并排序,快速排序)一种线性复杂度的排序.zip
- 冒泡排序 直接选择排序 直接插入排序 随机快速排序 归并排序 堆排序.zip
- 课设-内部排序算法比较 包括冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、归并排序和堆排序.zip
- Python排序算法.zip
- C语言实现直接插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序、归并排序、计数排序,并带图详解.zip
- 常用工具集参考用于图像等数据处理
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
前往页