下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C8051F同时实现AD和串口收发的程序/-#include #include stdio.hsfr16 TMR3RL = 0x92; /定时器3重装载寄存器sfr16 TMR3 = 0x94; /定时器3计数器sfr16 DP =0x82;sfr16 ADC0 =0xbe;sfr16 ADC0GT =0xc4;sfr16 ADCOLT =0xc6;sfr16 RCAP2 =0xca;sfr16 T2 =0xcc;sfr16 RCAP4 =0xe4;sfr16 T4 =0xf4;sfr16 DAC0 =0xd2;sfr16 DAC1 =0xd5;#define uchar unsigned c
2、har#define uint unsigned int/-/参数设置区/-#define BAUDRATE 9600 /波特率bps#define SYSCLK 11059200 /外部晶振,修改也要修改OSCXCN#define SMODVAL 0 /SMOD的值,修改请也修改PCONVAL#define PCONVAL 0x00 /PCON的值,=0x00时SMOD0=0; =0x80时SMOD0=1#define TXVAL (256-SYSCLK*(SMODVAL+1)/BAUDRATE/384) /定时器初值#define MAX_LEN 1/每次接收/发送字符串的长度#defin
3、e SAMPLERATE0 5000#define NUM_SAMPLES 1#define TURE 1#define FALSE 0/-/全局变量/-sbit LED = P16; /LED 1亮 0灭bit readFlag = 0; /读标志uchar readCounts = 0; /已经读取的字符个数,与MAX_LEN比较uchar idATa trdATaMAX_LEN; /要接收/发送的字符串xdATa unsigned samplesNUM_SAMPLES;bit ADC0_DONE;/-/子函数声明/-void SYSCLK_Init(void); /系统时钟初始化void
4、 PORT_Init(void); /端口初始化void UART0_Init(void); /串口UART0初始化void Send_Char(uchar ch); /发送单个字符void Send_String(uchar * str, uint len); /发送一个字符串void UART0_ISR(); /串口中断服务程序,接收字符void Timer3_Init(uint counts); /定时器3初始化void Timer3_ISR(void); /定时器3中断服务程序void ADC0_Init (void);/-/主函数/-void main(void)unsigned s
5、hort i;floAT temp,k;WDTCN = 0xde; /禁止看门狗 WDTCN = 0xad;P6&=0x02;here:i=0;SYSCLK_Init(); /时钟初始化PORT_Init(); /端口初始化UART0_Init(); /串口初始化Timer3_Init(SYSCLK/12/10); /定时器初始化EA = 1; /开全局中断ADC0_Init();AD0INT=0; AD0BUSY=1; while(AD0INT=0); temp=ADC0; k=(temp*2.4)/4096; printf(n); printf(voltage%f,k); printf(n
6、); i=0;while(1) if(readFlag) /已经读取 readFlag = 0; /清零 Send_String(trdATa,MAX_LEN); /发送字符串 i+;if(i=10000)goto here; /-/子函数具体实现/-/系统时钟初始化void SYSCLK_Init(void)uint i;OSCXCN = 0x67; /采用外部晶振22.1184MHz,不分频. 选型OSCXCN=0110,0111for(i=0;i1mswhile(!(OSCXCN&0x80); /查询直到XTLVLD=1,晶振稳定OSCICN = 0x88; /切换到外部振荡器,允许时钟
7、失效监测器. OSCICN=1000,1000/端口初始化void PORT_Init(void)XBR0 = 0x04; /允许UART0,RX,TX连到2个端口引脚. XBR0=0000,0100XBR1 = 0x00;XBR2 = 0x40; /交*开关使能P0MDOUT |= 0x03; /P0.0为推拉方式输出,即TX0,RX0所在的端口 0000,0011P1MDOUT |=0x40; /P1.6为推拉方式输出,即LED所在的端口 0100,0000/串口初始化void UART0_Init(void) SCON0=0x50; TMOD=0x20; TH1=-(SYSCLK/BAU
8、DRATE/16); TR1=1; CKCON|=0x10; PCON|=0x80; TI0=1; TR0 = 1; ES0 =1; /UART0中断开启 ADC时候要屏蔽 TR1 = 1; /启动定时器T1 /定时器初始化void Timer3_Init(uint counts)TMR3CN = 0x00; /禁止定时器T3,清TF3,采用SYSCLK/12为时基 TMR3RL = -counts; /初始化重装载值TMR3 = 0xffff; /设置为立即重装载EIE2 |= 0x01; /T3中断开启 TMR3CN |= 0x04; /启动T3 /发送单个字符void Send_Char
9、(uchar ch)SBUF0 = ch; /送入缓冲区1while(TI0 = 0); /等待发送完毕TI0 = 0; /软件清零/发送字符串,调用Send_Char() len字符串长度void Send_String(uchar * str,uint len)uint k = 0;do Send_Char(*(str + k);k+; while(k =MAX_LEN) readCounts = 0;readFlag = 1;trdATareadCounts = rxch; /存入数组,供发送readCounts+; /ADC0_Init/配置ADC0使用定时器3溢出作为转换启动信号,转换信号结束时候产生中断,使用左对齐输出方式/允许ADC0,但保持ADC0转换结束中断为禁止状态void ADC0_Init(void) ADC0CN=0x04; /定时器 3 溢出启动 ADC0 转换 REF0CN=0x07; /内部偏压发生器工作,内部电压基准缓冲器工作。内部电压基准提供从 VR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养殖场承包合同(2026版)
- 山西晋中师范高等专科学校第一招聘校外教师笔试真题2025
- 福建省高速公路集团有限公司招聘笔试真题2025
- 2026 年新护士多维疼痛评估能力带教实训
- 2026 年初中秋季开学第一课劳动教育树立正确劳动价值观
- 2026年重庆市中考道德与法治试卷(真题+答案)
- 2025-2026年ISO17025认证下三维扫描设备行业要求与市场研究分析报告
- 化工厂废水处理细则
- 冶金企业环保制度
- 某电子厂环保准则
- GB 44721-2026智能网联汽车自动驾驶系统安全要求
- 2026广东佛山市顺德区(家电)知识产权快速维权中心招聘合同制人员招聘2人备考题库带答案详解(完整版)
- 2026山东青岛广电影视传媒集团有限公司二次招聘24人笔试题库【典型题】附答案详解
- 2026年浙江中考(语文)真题带答案
- 2026年医师定期考核考试题库及答案
- 2026年重庆市渝中区中考二模语文试卷
- 急性ST段抬高型心肌梗死诊断和治疗指南(2019)解读
- 2026-2030轨道钢产业市场深度调研及发展趋势与投资前景研究报告
- 养老护理记录规范与书写
- 2026光纤氧气传感在煤矿安全监测中的推广应用报告
- 灼口汤治疗灼口综合征的临床观察与疗效探究
评论
0/150
提交评论