📄 232.asm
字号:
;程序名: MCS51实验板配套程序-232通讯及显示
;功能: 由PC发hex 1字节,mcu收到后返回该字节,并在实验板上显示
; 本实验为中断方式
; 请将实验板上S6打到11.0592MHz挡
;电路介绍:显示由一片74164驱动4位共阴数码管
; DsDat-p1.4;DsClk-p1.5;Gw-p1.0;Sw-p1.1;Bw-p1.2;Qw-p1.3
; 通讯用中断方式
;www.01mcu.net www.01mcu.com 2003/4/20编写
;*******************************************************************
;定义
XSDAT BIT P1.4 ;定义部分,意思是:程序中管脚名用前面字符替代
XSCLK BIT P1.5
GW BIT P1.0
SW BIT P1.1
BW BIT P1.2
QW BIT P1.3
SJGW EQU 30H ;数据存储器
SJSW EQU 31H
SJBW EQU 32H
SJQW EQU 33H
TEMP EQU 20H
;**********************************************************
ORG 0000H
LJMP INIT
ORG 0023H
LJMP COMM ;串口中断
;初始化//串口收发均用查询方式
INIT: MOV P0,#0FFH
MOV P1,#0
MOV SP,#40H
MOV A,#0 ;清内存
MOV R0,#50H
INILO: MOV @R0,A
DJNZ R0,INILO
MOV TMOD,#20H ;
MOV TH1,#0FDH ;FAH=9600BPS串口速度
MOV TL1,#0FDH
MOV PCON,#00H ;不加速
MOV SCON,#50H
SETB TR1
SETB ES
SETB EA
LCALL DISPLAY
;****主程序***************************************************
MAIN: MOV A,TEMP
ANL A,#0FH
MOV SJGW,A
MOV A,TEMP
ANL A,#0F0H
SWAP A
MOV SJSW,A
LCALL DISPLAY
LJMP MAIN
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;*****接收/发送 串口数据**用中断,返回************************
COMM:
; JNB RI,$
CLR EA
PUSH ACC
CLR RI
MOV A,SBUF
MOV 20H,A ;先保存
MOV SBUF,A ;再转发
JNB TI,$
CLR TI
SETB EA
POP ACC
RETI
;************************************************************************
;74164显示程序,使用RS1=1,RS0=0的1区
;---------------------------------------------------------
DISPLAY: PUSH ACC ;保存ACC
PUSH PSW
CLR RS1
SETB RS0 ;使用第一区工作寄存器
MOV DPTR,#XSTAB
MOV A,SJGW ;取得数据
MOVC A,@A+DPTR ;提取字模
ACALL DSOUT ;调用送出子程序
CLR GW
ACALL DS1MS ;调用显示1MS延时程序
SETB GW
MOV A,SJSW
MOVC A,@A+DPTR ;提取字模
ACALL DSOUT ;送出
CLR SW
ACALL DS1MS ;显示1MS
SETB SW
MOV A,SJBW
MOVC A,@A+DPTR ;提取字模
ACALL DSOUT ;送出
CLR BW
ACALL DS1MS ;显示1MS
SETB BW
MOV A,SJQW
MOVC A,@A+DPTR ;提取字模
ACALL DSOUT ;送出
CLR QW
ACALL DS1MS ;显示1MS
SETB QW
POP PSW
POP ACC ;出栈
RET ;返回调用
;---送出循环----------
DSOUT:
MOV R0,#8 ;传送一个字节8位
DSLOOP: RLC A ;左移
MOV XSDAT,C ;送数据到数据口
SETB XSCLK ;送一时钟
CLR XSCLK
DJNZ R0,DSLOOP
RET
;---显示延时----------
DS1MS: MOV R1,#5
DS1LO: MOV R2,#100
DJNZ R2,$
DJNZ R1,DS1LO
RET ;延时返回
;************************************************************************
;显示字表(共阴)
XSTAB: DB 3FH,06H,5BH,4FH ;"0","1","2","3"
DB 66H,6DH,7DH,07H ;"4","5","6","7"
DB 7FH,6FH,77H,7CH ;"8","9","A","B"
DB 39H,5EH,79H,71H ;"C","D","E","F"
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -