您的当前位置:首页正文

串行通讯实用程序,汇编

2021-03-02 来源:易榕旅网
;显示存储器定义部分

S1 EQU 30H ;设定个位数据

S2 EQU 31H ;设定十位数据 S3 EQU 32H ;设定百位数据 S4 EQU 33H ;设定千位数据

W1 EQU 34H ;显示个位数据存储 W2 EQU 35H ;显示十位数据存储 W3 EQU 36H ;显示百位数据存储 W4 EQU 37H ;显示千位数据存储

PD EQU 38H ; 显示开启循环位 SANS EQU 39H ; 显示闪烁控制位 SAN BIT 70H ; 闪烁周期定时位 TS BIT 71H ; 闪烁周期定时位

;********************************************************************************

;定时设定存储器

DINGS1 EQU 3AH ;数据刷新一级定时 DINGS2 EQU 3BH ;数据刷新二级定时, DINGS3 EQU 3CH ;三级定时,到1秒

;************************************************************************ ;定时输出存储器定义部分

WDA EQU 3DH ; 设定1个位 WDB EQU 3EH ; 设定1十位 WDC EQU 3FH ; 设定1百位 WDD EQU 40H ; 设定1千

WD0 EQU 41H ; 设定3千位

M11 EQU 51H ; 设定4个位 M22 EQU 52H ; 设定4十位 M33 EQU 53H ; 设定4百位 M44 EQU 54H ; 设定4千位

SHUC1 BIT P1.0 ; 各输出端口 JIAG BIT P1.1 ; JIANG BIT P1.2 ; SHUC4 BIT P1.3 ; SHUC5 BIT P1.4 ;

;**************************************** ;设定存储空间

;**************************************** SDA BIT P3.7 ; 数据位定义 SCL BIT P3.5 ; 时钟位定义 DIZI EQU 7EH ; 地址位定义 SHUJV EQU 7DH ;数据位定义

;*********************************** ;按键定义

;*************************

SD BIT P3.0 ; 设定键端口 SX BIT P3.1 ; 向下键端口 ZY BIT P3.2 ; 左右键端口 JY BIT P3.6 ; 加一键端口

;********************************** ; 运算单元

;**********************************

; 被除数为BC4,BC3,BC2,BC1,除数为C4,C3,C2,C1,余数为YUSU4,YUSU3,YUSU2,YUSU1 BC4 EQU 62H BC3 EQU 63H BC2 EQU 64H BC1 EQU 65H C4 EQU 66H C3 EQU 67H C2 EQU 68H C1 EQU 69H

YUSU4 EQU 55H YUSU3 EQU 56H YUSU2 EQU 57H YUSU1 EQU 58H

SHANG1 EQU 59H SHANG2 EQU 5AH SHANG3 EQU 5BH SHANG4 EQU 5CH

SHANG EQU 5DH

;**************************************** ;光强及寿命部分

;***************************************** GQ1 EQU 5EH GQ2 EQU 5FH GQ3 EQU 60H GQ4 EQU 61H

GQ11 EQU 49H GQ22 EQU 4AH GQ33 EQU 4BH GQ44 EQU 4CH

SOUM1 EQU 4DH SOUM2 EQU 4EH SOUM3 EQU 4FH SOUM4 EQU 50H

SOUM11 EQU 51H SOUM22 EQU 52H SOUM33 EQU 53H SOUM44 EQU 54H

;************************************ ; 高位数据部分

;************************************ H1 EQU 6AH H2 EQU 6BH

H3 EQU 6CH H4 EQU 6DH

;************************************ ; 时钟单元

;*************************************** HAOM EQU 6EH MZ1 EQU 6FH MZ2 EQU 70H SZ1 EQU 71H SZ2 EQU 72H SZ3 EQU 73H SZ4 EQU 74H

SANM EQU 75H

LIANG BIT P3.4

BHYS EQU 76H

;**************************** MOSU EQU 77H MOSU2 EQU 78H ADCS BIT P1.5 ADDO BIT P1.6 ADDI BIT P1.6 ADCLK BIT P1.7

org 0023h ;串行口中断入口地址

ajmp BOTE ;跳转至中断服务程序

org 0000h

clr p1.5

;以下是串口初始化程序

mov scon,#40h ;选择串口工作于方式1

mov tmod,#20h ;定时器T1设置为工作方式2,用作波特率发生器

mov tl1,#0f3h ;按照波特率为2400计算初值

mov th1,#0f3h ;把计数初值送入常数缓冲器

mov pcon,#80h ;smod=1,波特率变成4800

setb tr1 ;启动定时器T1

MOV WDA,#064H ; 设定1个位 MOV WDB,#066H ; 设定1十位 MOV WDC,#068H ; 设定1百位 MOV WDD,#06AH ; 设定1千位

MOV WD0,#00H ; 设定3千位

;以下判断是否按键k0按下

wait1: jb p3.6,wait1 ;k0没有按下,等待

acall del10ms ;延时10ms去抖动

jb p3.6,wait1 ;再次查询k0,是抖动返回

wait2: jnb p3.6,wait2 ;等待按键弹起

MOV R0,#WDA

FASONG:MOV A,@R0 MOV SBUF,A JNB TI,$ acall del10ms INC R0 MOV A,R0 CJNE A,#WD0,FASONG

ajmp wait1 ;返回继续查询k0是否按下

del10ms: mov r7,#20 ;延时10ms子程序

del1: mov r6,#0ffh

del2: djnz r6,del2

djnz r7,del1

ret

BOTE: clr ea ;cpu关闭中断

clr ri ;清除串口接受中断标志

setb ea ;cpu开放中断

reti ;返回主程序,等待下一次响应中断 end

因篇幅问题不能全部显示,请点此查看更多更全内容