實驗要求:AT89S52串行通信口工作在方式1,8位UART方式,允許接收,9600bps。在PC機上運行串口調試軟件。編程實現:AT89S52內部定時器1,按方式1工作,每1秒鐘內部RAM30H單元內容加1,并通過串行通信口送PC機顯示。
//This is the fifth_2 program of homework
//This is made by WQ Data:2013/3/4/
ORG 0000H
AJMP MAIN
ORG 0023H //0023H 串口中斷程序的入口地址
AJMP Transfer
ORG 000BH //000BH 計時器程序T0入口地址
AJMP WT0
MAIN:
MOV TMOD,#21H //定時器的工作方式寄存器
MOV TH0,#4CH //定時器0
MOV TL0,#00H //定時器0
MOV R3,#40 //R3做一個計數器
SETB EA //開總中斷
SETB ET0 //允許計時器
SETB TR0 //開啟計時器0
MOV TH1,#0FDH
MOV SCON,#50H ;傳口工作方式1,允許中斷接受
SJMP $
ORG 0100H
WT0: MOV TH0,#4CH //計時器0置數
MOV TL0,#00H
DJNZ R3,RETN //1秒鐘到來了
MOV R3,#50
SETB ES //打開串口中斷
SETB TR1 //打開定時器1
MOV R1,#30H
MOV @R1,#89H
MOV R1,#030H
MOV A,@R1
MOV SBUF,A //將內存中的數據傳送給計算機
RETN:RETI //中斷子程序的返回指令
Transfer:
JNB TI,$
CLR TI
MOV P1,A
RETI
END