实验报告书
信息工程系
电气自动化
11班
姓名:张青
日期:2014.10.14 实验一:完成AT89S51单片机与PC机的RS232串行通信接口电路实物制作。该部分电路可在实物电路板Ⅰ上进行搭建。
实验二:设计串口初始化程序,要求:工作方式
1、查询方式、允许接收、波特率为2400bps,设时钟频率为12MHz。
实验三:串口查询方式设计带参数字符发送子程序,并在此基础上利用MOVC查表指令完成带参数串发送子函数设计,自定义被发送字符串。要求工作方式1,波特率4800,时钟频率为11.0592MHz。 实验四:串口中断方式编写单字符接收程序,存储收接收并进行回显,波特率设为9600,时钟频率为11.0592MHz。 实验五:完成PC机远程控制小灯系统的软硬件仿真设计,并在实物电路板上测试程序的功能实现。 实验六:利用MOVC查表指令在试验电路板Ⅰ上拓展完成小灯多种显示功能的实现。
实验七:拓展题:结合定时器中断程序拓展完成PC机远程控制小灯闪烁、左右移动等功能的实现。
实验二:ORG 0000H LJMP START ORG 0030H START: LCALL INIT_S ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;串行口初始化子程序 ;;;;;;;;;;
INIT_S: MOV SCON,#40H MOV TMOD,#20H
MOV TH1,#0FAH
MOV TL1,#0FAH
SETB TR1
SETB REN
RET END
实验三:
ORG 0000H
LJMP START
ORG 0030H START:
LCALL INIT_S
MOV DPTR,#HELLO_TAB
LCALL
SEND_STRENG
LJMP $
INIT_S: MOV
SCON,#40H
MOV
TMOD,#20H
MOV
TH1,#0FAH
MOV
TL1,#0FAH
SETB TR1
CLR EA
RET
SEND_STRENG:MOV R1,#00H SEND_NEXT : MOV A,R1
MOVC A,@A+DPTR
CJNE A,#0FFH,SEND_B
RET
SEND_B: LCALL SEND_BYTE
INC R1
LJMP SEND_NEXT
SEND_BYTE:CLR TI
MOV SBUF,A
JNB TI,$
RET
ORG 0100H
HELLO_TAB:DB
\"tang zi li shi ge da sb\"
DB
0DH,0AH,0FFH
END 实验四:
RX_D_FIRST EQU 45H RX_D_P EQU 30H RX_COM_OK BIT 00H
ORG 0000H
LJMP START
ORG 0023H
LJMP INT_SERIAL
ORG 0030H START: LCALL INIT_S
MOV RX_D_P,#RX_D_FIRST
CLR RX_COM_OK
MOV DPTR,#HELLO_TAB
LCALL SEND_STRING
MOV DPTR,#COM_MESSAGE
LCALL SEND_STRING
LJMP $ 串行口初始化子程序
INIT_S: MOV SCON,#40H
MOV TMOD,#20H
MOV TH1,#0FDH
MOV TL1,#0FDH
SETB TR1
SETB EA
SETB ES
SETB REN
RET SEND_BYTE: CLR TI
MOV SBUF,A
JNB TI,$ RETURN: RET ; SEND_STRING: MOV R4,#00H SEND_NEXT: MOV A,R4
MOVC A,@A+DPTR
CJNE A,#0FFH,SEND_B
RET
SEND_B: LCALL SEND_BYTE
INC R4
LJMP SEND_NEXT INT_SERIAL: CLR EA
JBC RI, RX_DAT
JBC TI, INT_RETURN RX_DAT: MOV R1,RX_D_P
INC RX_D_P
MOV A,SBUF
CJNE A,#0DH,LOAD_DAT
MOV DPTR,#RECEIVE_OK
LCALL SEND_STRING
MOV RX_D_P,#RX_D_FIRST
SETB RX_COM_OK
LJMP INT_RETURN LOAD_DAT: MOV SBUF,A
MOV @R1,A
INT_RETURN: SETB EA
RETI
ORG 0100H HELLO_TAB: DB \"Welcome to online operating system!\"
DB 0DH,0AH,0FFH COM_MESSAGE: DB \"Please input the command to control the LED.\"
DB 0DH,0AH,0FFH RECEIVE_OK: DB 0DH,0AH
DB \"Receiving the command is ok!\"
DB 0DH,0AH,0FFH
END