完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
max232是不是有问题,还有你的代码能保证正确么?
|
|
|
|
是一个电机驱动的程序 我把串口的程序贴出来给你看一下啊 |
|
|
|
void cpu_init() { //I/0初始化 TMOD=0x20;//使定时器T1工作在方式2,即T1工作在常数自动装入的8位定时器/计数器状态 TCON=0x00;//清定时器T0T1溢出标志,关定时器T0T1, //清外中断INT0和INT1溢出标志,选择INTOINT1为电平触发方式 TH1=0xfd; //11.0592MHz下,设置串行口波特率为9600 TL1=0xfd; PCON=0x00;//波特率不加倍 TR1=1;//启动定时器T1 SCON=0x50;//串口工作在方式1,且允许串行口接收,set byte rate as 9600bps //IP=0x01;//设置外中断INT0为高优先级,此处加优先级 IE=0x90; // EA=1,ES=1,开总中断,开串行中断 ZM_Key1=1; ZM_Key2=1; FM_Key1=1; FM_Key2=1; eye_LR=0; eye_LR_temp=0xFF; } 下面是串口通信 //增加串口中断模块 void cpu_com() interrupt 4 { uchar rev; EA=0; if(RI) { RI=0; rev=SBUF;//CPU收到的PC机数据 if( (rev&0x60)==0x40)//判断是否为镜头变倍指令 { switch(rev&0x03) { case 0x00:zoom_motor(0,0);break;//控制变倍镜头停止(锁定) case 0x01:zoom_motor(1,1);break;//控制变倍镜头倍率变大 case 0x02:zoom_motor(1,0);break;//控制变倍镜头倍率变小 default:break; } } if( (rev&0x60)==0x20 )//判断是否为镜头聚焦指令 { switch(rev&0x03) { case 0x00:send_LR_info() ;break; default: break; } } } if(TI) { TI=0; } EA=1; } |
|
|
|
好好学习天天向上谢谢lz
|
|
|
|
|
|
|
|
问题已解决,是因为开机的时候没清SBUF寄存器引起的 MCU通信 要先有“握手”信号才能建立连接 此时若SBUF中有数据 这个时候会发生电平冲突 连接建立不起来 MCU后迅速上电就等于将单片机“复位”复位后的MCU就相当于将SBUF清0,所以就像上面说的第二次开电的时候才能建立连接 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-spi编程示例之spi编写程序
657 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第三十七章 image图像对比实验
640 浏览 0 评论
753 浏览 1 评论
546 浏览 0 评论
关于RT-Thread studio添加freemodbus控件失败的问题
910 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11652 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 16:01 , Processed in 0.506055 second(s), Total 51, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号