该程序就是利用该功能发送八个数。
mov a,#00h
mov scon,a
-------串口的工作模式设置在0模式
mov ro,#30h
-------八个数存放在内部RAM中,从30h开始放
mov r7,#8
-------八个数一共发送八次
start:mov a,@r0
mov sbuf,a
-------把要发送的数放入SBUF寄存器
wait1: jbc ti,loop1
sjmp wait1
-------等一个字节数发送完成,通过TI的值,如果为1则发送完成。如果不为1,则一直等待
loop1:inc r0
djnz r7,start
ret
-------RAM地址巧早乎加1,发送第二个数,同时次数加1,一直到八个数发送完成
-------另外该程序好像忘了在每次发送完成后把发送完成标志TI清零
-------另外通过该方式串口发送一个二进制的数的间睁答隔频率是系统频率的1/12(对于兼容51系列的)
严格来说,51单片机的串口方式0,并不是用于串口通信的,只用于在RXD,TXD引脚上接有74LS164,串入/并出,或74LS165,并入串出。也就是只能与串行芯片配合使用的。而真正用串口实现串行通信的是方式1。所以,你的程序要改成方式1。在方式1时,只有开中断简卜游允许标志位和接收到数据弊轮后,才拦销会申请中断,单片机才会响应中断。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)