完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
发送中断,是在执行了MOV SBUF,A ,发送完毕后,ti置1,然后才能进入中断,可是我看到书上一个例子,在中断里发送多个字节数据,发送一字节后退出中断,退出后没有MOV SBUF,A的指令,怎么又进入中断发送数据?
|
|
相关推荐
17个回答
|
|
|
进入中断后再发送一个字节数据,退出中断后当然会再次进入中断
|
|
|
|
|
|
SERVE: CLR TI
PUSH PSW PUSH A MOV SBUF,@R0 WAIT:JNB TI,WAIT CLR TI INC R0 DJNZ R4,ERTURN ;R4为待发送的字节数 OVER:POP A POP PSW CLR ES RETI RETURN: POP A POP PSW RETI |
|
|
|
|
|
上面是中断发送程序,首先不懂的是,主程序没有mov ***uf 的指令,怎么进入发送中断,进入中断后,中断内部的mov ***uf产生的TI为1已经被清零,发送一个字节后退出,如何再发送下面的字节?
|
|
|
|
|
|
这个代码确实有问题,编译应该可能 有问题
POP A应该是编译不过的,要写成POP ACC R0,R4什么的都没有初始化,另个不应该清除TI,否则无法再次进入中断 这应该不是正式代码吧, |
|
|
|
|
|
这是一本参考书的程序,介绍多机通讯的,POP A没有问题,我经常这么用。R0R4无关紧要。我就是不知道怎么进入中断。
|
|
|
|
|
|
进入中断前一般会在主循环发个数据
|
|
|
|
|
|
主程序是有发送数据,但是发送的时候串口中断是关闭的,并且发送完主程序已经把TI清零,然后打开串口中断。
|
|
|
|
|
|
如果是这样的话,说明程序有问题
|
|
|
|
|
|
POP A肯定不行的,你还经常用
|
|
|
|
|
|
以我多年搞项目的经验告诉楼主,还是别在写汇编了,搞个串口也汇编,纯粹坑自己,去写C语言吧,直观一点,现在的单片机基本都有串口进中断的多次收发的C例程
|
|
|
|
|
|
PUSH A 汇编是不能通过的,应PUSH ACC
|
|
|
|
|
|
没怎么用过进入中断的发送方式,通常都是在外部依次执行发送,这里你有一个概念的错误,串口发送数据完毕后,TI置1,硬件依据这个条件进入中断,这里包括TI的置1都是硬件自动完成的,所以在执行MOV SBUF,A之后就不需要理会了。
这个例程有问题,使用中断发送数据,那么在中断里就不应该有判断TI是否置1的代码,例程里的WAIT部分应该去除,应该有一个判断数据包是否发送完全的判断处理,判断成立后,应该设置一些标志,来避免无限制的发送数据。 |
|
|
|
|
|
下载需要几分,我看看
|
|
|
|
|
|
汇编不是很懂,学习下。
|
|
|
|
|
|
都是汇编的啊
|
|
|
|
|
|
好高深的样子哦
|
|
|
|
|
|
应该在主程序里面开始第一个字节的发送,然后进去中断后发送剩余的字节
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
265 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
789 浏览 0 评论
1306 浏览 2 评论
787 浏览 0 评论
【RA4M2-SENSOR开发板评测】Analogue+Timers综合测试
1587 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16900 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 01:07 , Processed in 1.080040 second(s), Total 101, Slave 84 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3581