21,458
社区成员
发帖
与我相关
我的任务
分享
ORG 0000H
AJMP START
ORG 0030H
START: MOV P0,#00H
LOOP: LCALL DELAY
MOV P0,P0+1
AJMP LOOP
DELAY: MOV R7,#200
DL1: MOV R6,#100
DL2: MOV R5,#10
DJNZ R5,$
DJNZ R6,DL2
DJNZ R7,DL1
RET
END
MOV P0, 0xff ;需要置一,说明此刻用作输入口。
MOV A, P0
INC A
MOV P0, A
auxr equ 8eh;
main:
mov sp, #60h;
lcall comrest;调用串口初始子程序
start:
mov p0, #0ffh;读取P0口数据之前,应先将P0口置高在读取,保证读数的正确性
mov a, p0;读取数据送到A
lcall com_out;调用串口发送子程序
ljmp start;进入下一个读取、发送周期
comrest:;串口初始化子程序,设晶振频率为11.0592M,波特率为9600
mov scon, #50h;设置数据格式为8位,无奇偶校验
mov tmod, #21h;设置定时器1为8位自动重装
mov th1, #0fdh;定时器1自动重装数,改变它可达到改变串口波特率的目的,这里取
mov tl1, #0fdh;晶振频率为11.0592M,则波特率为9600
anl auxr, #10111111b;
setb tr1;
setb es;
setb ea;
ret
com_out:
clr es;
clr ti;
mov sbuf, a;
com_out1:
jnb ti,com_out1;
clr ti;
steb es;
ret
end