完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
我用串口中断发送数据,开始单片机发送正常,也能接受!当我再次将程序烧录到单片机就发现单片机不能正常工作了!我的单片机晶振是11.0592M的。波特率9600!单片机工作不正常的表现为:单片机运行熟读变得相当相当慢,比以前慢了许多!不知道是怎么回事,还请各位高手帮帮忙,看看我的程序哪里出了问题!在此谢过了!
#include #include #define uint unsigned int #define uchar unsigned char uchar code ptrData[] ={0x7e,0x04,0xa1,0x00,0x00,0x7e}; //命令 ***it djz = P2^4; //电机正转 uint txbuffer[]; //串口发送缓存区 uint bufferhead,bufferCt; //发送状态标志 void init() { TMOD = 0x21; //定时器1工作方式2,定时器0工作方式1(用于延迟) SCON = 0x50; TH1 = 0xfd; //串口9600波特率初值 TL1 = 0xfd; TR1=1; EA =1; ES =1; bufferhead=bufferCt=0; } void delay(uint i) { uchar j; while(i--) { for(j=0;j<115;j++) //1ms基准延时程序 { ; } } } void uart_senddata(uchar j) { uint i; for(i=0;i<6;i++) { if(i!=4) { txbuffer[bufferCt]=ptrData[i];//循环添加待发送数据 bufferCt++; } if(i==4) { txbuffer[i]=j; bufferCt++; } } ti=1; //命令数据存缓存期完毕后,立刻触发串口发送中断 } void main() { init(); delay(200); uart_senddata(4); delay(100); while(1) { djz=0; delay(500); djz=1; delay(500); } } void uart_int(void) interrupt 4 { if(TI) //等待中断触发 { TI=0; if(bufferCt) { SBUF=txbuffer[bufferhead++]; bufferCt--; if(bufferCt==0) { bufferhead = 0; //当发送数据个数大于16时,bufferhead清零 } } } } |
|
相关推荐
20个回答
|
|
|
您好,对于这个的确了解的不多,还请问您一下,这个串口发送和数码管扫描是具体怎样产生抖动的,能不能稍微说的具体一点,谢谢你! |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
265 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
789 浏览 0 评论
1306 浏览 2 评论
787 浏览 0 评论
【RA4M2-SENSOR开发板评测】Analogue+Timers综合测试
1587 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16901 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 05:56 , Processed in 0.420985 second(s), Total 39, Slave 32 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
4010