单片机学习之十九:串行通讯程序-单片机接收
当电脑向单片机发送一个数据后,P0口发生灯光变换。
二、实验任务分析:
这个试验我们仍然采用方式1来完成。在上一个试验的通讯理论介绍中,我们知道,当单片机接受到一帧信号后,会置位串行口接受中断标志RI,从而向单片机申请中断。如果单片机开放中断,就会进入中断服务程序,我们就把灯光变化的任务放到中断程序中来完成即可。
当然,这个试验功能的实现不只是这么一种方法。我们还可以采用在主程序中查询RI的方式来实现。这个试验我们就分别用这两种方式来现它。同样,在这个试验中,我们也利用串口调试助手来完成向单片机发送数据的过程。具体设置方法可见下图:
三、实验程序
1、 中断方式实现
org 0000h
ajmp main
org 0023h ;串行口中断入口地址
ajmp serial ;跳转至中断服务程序
main: clr p1.5
mov p0,#55h ;让8个led从右到左依次为亮、灭(注意跳线jmp0置于12)
mov scon,#50h ;单片机工作于方式1,可以接受数据
mov tmod,#20h ;T1设置为工作方式2
mov tl1,#
mov th1,#
mov pcon,#80h ;smod=1,波特率变成4800
setb tr1 ;启动定时器T1开始定时
setb ea ;cpu开放中断
setb es ;开放串行口中断
ajmp $ ;等待中断
serial: clr ea ;cpu关闭中断
clr ri ;清除串口接受中断标志
mov a,p0
cpl a
mov p0,a ;p0口灯光变化
setb ea ;cpu开放中断
reti ;返回主程序,等待下一次响应中断
end
2、 查询方式实现:
org 0000h
ajmp main
main: clr p1.5
mov p0,#55h ;让8个led从右到左依次为亮、灭(注意跳线jmp0置于12)
mov scon,#50h ;单片机工作于方式1,可以接受数据
mov tmod,#20h ;T1设置为工作方式2
mov tl1,#
mov th1,#
mov pcon,#80h ;smod=1,波特率变成4800
setb tr1 ;启动定时器T1开始定时
wait: jnb ri,wait ;如果停止位是0,表示信息没有发送完毕,等待
clr ri ;清除停止位
mov a,p0
cpl a
mov p0,a ;p0口灯光变化
ajmp wait
end
把上面的程序下载到测试板上,然后在串口调试助手中随便写入一个数据,每一次按下串口调试程序中的手动发送按键,就会发现led的灯光发生变化。
单片机串行通讯单片机接 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)