完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
普中单片机串口接收数据控制灯亮灭
简介 1.硬件部分 普中单片机开发板 USB To TTL 2.软件部分 keil软件 串口调试助手 硬件部分 普中单片机开发板 一般的开发板即可 软件部分 /*----------------------------------------------------------------------------- * 实 验 名 : 串口试验 * 实验说明 : 普中单片机串口接收数据控制灯亮灭 * 连接方式 : * 注 意 : 该试验使用的晶振是12MHZ *******************************************************************************/ #include《reg52.h》 #include《intrins.h》 #define uchar unsigned char #define uint unsigned int #define jingzhen 12000000UL /*使用12.0M晶体*/ #define botelv 4800UL /*波特率定义为4800*/ uchar PuZh[] = “广州汇承信息科技有限公司www.hc01.com”; //--定义使用的IO--// ***it LED1=P2^0; ***it LED2=P2^1; ***it LED3=P2^2; //--声明全局函数--// void UsartConfiguration(); void Delay_1ms(uint i); void DELAY_nMS(unsigned int time); /******************************************************************** * 名称 : Com_Int() * 功能 : 串口中断子函数 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Com_Int(void) interrupt 4 { uchar i; uchar receive_data; EA = 0; if(RI == 1) //当硬件接收到一个数据时,RI会置位 { RI = 0; receive_data = SBUF;//接收到的数据 if(receive_data == ‘1’) { LED1= 0; DELAY_nMS(500); LED2= 0; DELAY_nMS(500); LED3= 1; DELAY_nMS(500); } else { LED1 = 1; DELAY_nMS(500); LED2 = 1; DELAY_nMS(500); LED3 = 0; DELAY_nMS(500); } } for(i=0; i《36; i++) { SBUF = PuZh[i]; //将要发送的数据放入到发送寄存器 while(!TI); //等待发送数据完成 TI=0; //清除发送完成标志位 Delay_1ms(1); } EA = 1; } /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main() { UsartConfiguration();//初始化串口 while(1); } /******************************************************************************* * 函 数 名 : UsartConfiguration() * 函数功能 : 设置串口 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void UsartConfiguration(void) //串口初始化 { EA=0; //暂时关闭中断 TMOD&=0x0F; //定时器1模式控制在高4位 TMOD|=0x20; //定时器1工作在模式2,自动重装模式 SCON=0x50; //串口工作在模式1 TH1=256-jingzhen/(botelv*12*16); //计算定时器重装值 TL1=256-jingzhen/(botelv*12*16); PCON|=0x80; //串口波特率加倍 ES=1; //串行中断允许 TR1=1; //启动定时器1 REN=1; //允许接收 EA=1; //允许中断 } /******************************************************************** * 名称 : Delay_1ms() * 功能 : 延时子程序,延时时间为 1ms * x * 输入 : x (延时一毫秒的个数) * 输出 : 无 ***********************************************************************/ void Delay_1ms(uint i)//1ms延时 { uchar x,j; for(j=0;j《i;j++) for(x=0;x《=148;x++); } void DELAY_nMS(unsigned int time) { unsigned int i,j; for(i=0;i《time;i++) for(j=0;j《939;j++); } |
|
|
|
只有小组成员才能发言,加入小组>>
2548 浏览 0 评论
1145浏览 2评论
744浏览 1评论
498浏览 0评论
263浏览 0评论
424浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 16:13 , Processed in 1.285862 second(s), Total 78, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号