单片机汇编语言串口通信问题(初学)下面是单片机点对点串行通信程序
问:1.第一个程序中STOP:SJMPSTOP这项有什么用,去掉有什么影响2.通信中,RI和TI这2个是表示刚开始发送或接收就置1吗还是发送和接收结束后才置13.程序2中...
问:1.第一个程序中 STOP:SJMP STOP这项有什么用,去掉有什么影响
2.通信中,RI和TI这2个是表示刚开始发送或接收就置1吗还是发送和接收结束后才置1
3.程序2中F0表示什么,F0会随着接收完成置1?
4.为什么要CLR ES,这样不会使中断0023H无法进行吗? 展开
2.通信中,RI和TI这2个是表示刚开始发送或接收就置1吗还是发送和接收结束后才置1
3.程序2中F0表示什么,F0会随着接收完成置1?
4.为什么要CLR ES,这样不会使中断0023H无法进行吗? 展开
3个回答
展开全部
1。这是一条无条件 转移语句,这里转移地址为本条指令,就是原地无限循环。
去掉后 程序会继续 执行进入无程序区 后又回到开始,也相当于重复运行原程序。
2。串口通讯的 RI和TI 为 接收 和 发送 一个字节数据 结束 后 置1 ,需要软件清零。
3。F0 是一个 在状态寄存器中 的 用户标志位,用户编程时可以使用,也可以在可以
位操作的RAM区 自己定义。
4。CLR ES 是关闭串口中断,这样就不会产生 串口中断,具体要看 程序需要,或者
在需要 关闭中断 的时候 关闭,需要 打开 时再 开启 中断,视编程方法而定。
5。你可以 通过 仿真 试试 你所提出的 情况 试试,可以增强认识。
去掉后 程序会继续 执行进入无程序区 后又回到开始,也相当于重复运行原程序。
2。串口通讯的 RI和TI 为 接收 和 发送 一个字节数据 结束 后 置1 ,需要软件清零。
3。F0 是一个 在状态寄存器中 的 用户标志位,用户编程时可以使用,也可以在可以
位操作的RAM区 自己定义。
4。CLR ES 是关闭串口中断,这样就不会产生 串口中断,具体要看 程序需要,或者
在需要 关闭中断 的时候 关闭,需要 打开 时再 开启 中断,视编程方法而定。
5。你可以 通过 仿真 试试 你所提出的 情况 试试,可以增强认识。
更多追问追答
追问
是不是当start里面程序执行完后sjmp $马上就会运行,不然怎么能跳转到SINT呢,可以的话帮忙列举下完成START后程序执行步骤
追答
这里其实 是在 等待,先是 F0 = 0 , 后是 在 重复检测 F0 是否 = 1, 如果 = 1 ,
则 跳转到 TRDATA 处 并且使 F0 = 0,
能使 F0 = 1 是串口有接收到数据,就是 串口中断服务程序在 的 SETB F0 ,
展开全部
答:1.第一个程序中 STOP:SJMP STOP这项有什么用,去掉有什么影响
是单片机的一个工作。单片机不能无工作,他总是要执行程序的。除非待机或休眠。
去掉在编译器中提示有错误无法完成编译
在单片机中因为无跳转一直执行到程序地址的最后然后从0000h执行
2.通信中,RI和TI这2个是表示刚开始发送或接收就置1吗还是发送和接收结束后才置1
发送和接收结束后由单片机内部硬件置1表示发送完或接收到。
3.程序2中F0表示什么,F0会随着接收完成置1?
F0是自定义位。表示什么用户自己定义。与单片机本身无关。在程序中由软件清0或置1
4.为什么要CLR ES,这样不会使中断0023H无法进行吗?
执行CLE ES 的确不能再相应串口中断了,
是单片机的一个工作。单片机不能无工作,他总是要执行程序的。除非待机或休眠。
去掉在编译器中提示有错误无法完成编译
在单片机中因为无跳转一直执行到程序地址的最后然后从0000h执行
2.通信中,RI和TI这2个是表示刚开始发送或接收就置1吗还是发送和接收结束后才置1
发送和接收结束后由单片机内部硬件置1表示发送完或接收到。
3.程序2中F0表示什么,F0会随着接收完成置1?
F0是自定义位。表示什么用户自己定义。与单片机本身无关。在程序中由软件清0或置1
4.为什么要CLR ES,这样不会使中断0023H无法进行吗?
执行CLE ES 的确不能再相应串口中断了,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1 不能去掉 程序完了停在这个地方,否则CPU会乱跑的
2 RI为接受中断标志,表示已经接受到数据 TI表示发送中断标志表示发送已经完成,RI需要人工清0
3 F0在下面这个程序中,当接受到数据后产生中断 中断程序 SINT 将F0置1,然后主程序判断 F0为1后读出接受到的数据 MOV A,SBUF
4 执行CLE ES 的确不能再相应串口中断了,但这个程序只接受一个字节 ,收到后就将中断关了
2 RI为接受中断标志,表示已经接受到数据 TI表示发送中断标志表示发送已经完成,RI需要人工清0
3 F0在下面这个程序中,当接受到数据后产生中断 中断程序 SINT 将F0置1,然后主程序判断 F0为1后读出接受到的数据 MOV A,SBUF
4 执行CLE ES 的确不能再相应串口中断了,但这个程序只接受一个字节 ,收到后就将中断关了
追问
想在请教下关于第3个问题,是不是当start里面程序执行完后sjmp $马上就会运行,不然怎么能跳转到SINT呢,可以的话帮忙列举下完成START后程序执行步骤
追答
sjmp $ 等同于 STOP: SJMP STOP
SINT 是中断函数 由
ORG 0023H
LMP SINT
可以看到这是串口中断,即发生串口中断后调用 SINT
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询