📄 11.asm
字号:
;************** 单 湿 度 读 取 模 块 源 程 序 *************
; M C U: AT89C2051 晶 振: 11.0592MHz 机器周期: 1.085uS
; 作 者: Mobile:13514132258 最初设计时间: 2001年01月10日
; 单 位: 水科所 Tel :0413-2428162 最后修改时间: 2003年03月09日
;原理图:
;******************************************************************
;资源使用:
; TIME0 方式
; TIME1 串口通信波特率发生器
; 20H,21H 程序员用标志位 22H 二-十进制转换
; 30H-39H 采样 5次频率暂存 40H-44H 串口接收缓存
; 0区 R0 字模间接寻址
; R1
; R2 上电自检计数
; R3 上电自检;DS18B20初始化
; R4
; R5
; R6 DS18B20初始化
; R7 DS18B20初始化
; 1区 R0 串口接收,发送;采样频率排序
; R1
; R2
; R3
; R4
; R5
; R6
; R7
WDZ1 EQU 10H
WDZ2 EQU 11H
WDZ3 EQU 12H
WDZ4 EQU 13H
ZMB1 EQU 14H
ZMB2 EQU 15H
ZMB3 EQU 16H
ZMB4 EQU 17H
TME1S EQU 18H
TME1MS EQU 19H
TDEO EQU 1AH
TEML EQU 1BH
R0BUF EQU 1CH ;发射用 R0 缓存
TEMP1 EQU 1DH
TEMP2 EQU 1EH
TEMP3 EQU 1FH
HEXB EQU 22H ;二-十进制转换,二进制值缓冲
HBIT7 BIT 17H ;22H(HWXB)bit7
HBIT6 BIT 16H ;22H(HWXB)bit6
HBIT5 BIT 15H ;22H(HWXB)bit5
HBIT4 BIT 14H ;22H(HWXB)bit4
HBIT3 BIT 13H ;22H(HWXB)bit3
HBIT2 BIT 12H ;22H(HWXB)bit2
HBIT1 BIT 11H ;22H(HWXB)bit1
HBIT0 BIT 10H ;22H(HWXB)bit0
ONCK BIT 00H
SINGL BIT 01H
MAX100 BIT 02H
PASS BIT 03H
RDWD BIT 04H
TEOF BIT 05H
RXFRIT BIT 06H
UTXE BIT 07H
SWD BIT 08H ;位发送温度
ADSET BIT 09H ;地址设置标志位
SR0E BIT 0AH
EOFST BIT 0BH
SPASS BIT 0CH
SDBJ BIT 0DH
ONPAS BIT 0EH
MAX125 BIT 0FH
LOW55 BIT 10H
GZM EQU 27H
SDZ2 EQU 26H
SDZ3 EQU 28H
SDZ4 EQU 29H
FEBQ1 DATA 2FH
FEBQ2 DATA 31H
FEBQ3 DATA 34H
FEBQA DATA 39H
FEQH EQU 4CH
FEQL EQU 4DH
PART1 EQU P3.0
PART2 EQU P3.1
PART3 EQU P3.2
PART4 EQU P3.3
LEDDA EQU P1
ORG 0000H
AJMP START
ORG 000BH ;TIME0 TL0 湿度计数
INC FEQH ;TL0 每次溢出高位计数加1
RETI
ORG 01BH ;TIME0 TH0 计时器
LJMP IRQT1
ORG 0023H
RETI
;+++++++ TIME0 TH0 中断 +++++++++++++++++++++++++++++++++
IRQT1: MOV TH0,#64 ;200uS到
PUSH ACC ;中断,长调用,转移,赋值
PUSH PSW ;占用了6uS
DJNZ TME1MS,T1RETA
MOV TME1MS,#50 ;10mS定时到
DJNZ TME1S,T1RETA ;1S定时到
MOV TME1S,#100
CLR TR0
LJMP CCOVU
T1RETA: LJMP T1RET
CCOVU:
MOV FEQL,TL0
MOV A,TL0
JNZ N0TL0
INC FEQH
N0TL0: INC R5
MOV TH0,#64 ;一秒计数后
MOV TL0,#0 ;定时器,计数器初始化
INC R1
MOV @R1,FEQH
INC R1
MOV @R1,FEQL
CJNE R5,#5,NRSD
MOV R5,#0
MOV R1,#FEBQ1
LCALL FQ5P1
MOV R1,#FEBQ1
LCALL RDSDZ
CLR ONPAS
NRSD: MOV FEQH,#0
MOV FEQL,#0
SETB TR0
T1RET: POP PSW
POP ACC
RETI
;++++++++++++ 主 程 序 +++++++++++
START: MOV P3,#0FFH
MOV P1,#0FFH
BEGIN: MOV R0,#00H ;00H-7FH 清零
CLAR: MOV @R0,#00H
INC R0
CJNE R0,#80H,CLAR
MOV SP,#50H ;特殊功能寄存器设置
MOV TMOD,#00100111B
MOV SCON,#50H
MOV PCON,#00H
MOV TH1,#0F3H ;1200(E6H)2400(F3H)
MOV TL1,#0F3H
MOV TH0,#64 ;200uS
MOV TL0,#0
MOV TEML,#2
MOV TME1MS,#50 ;250uSX200 50mS
MOV TME1S,#100 ;1S定时计数器
MOV R1,#FEBQ1
MOV SDZ2,#0EEH
MOV SDZ3,#0AH
MOV SDZ4,#0AH
SETB 38H
SETB ONPAS
MOV IP,#08H
MOV IE,#9AH
ACALL ONCHK ;上电自检
SETB TR0
SETB TR1
CONTI: ACALL LEDMO ;将值转换为字模
CHK1: MOV A,ZMB1
MOV LEDDA,A
SETB PART1
ACALL DELAY
CLR PART1
MOV A,ZMB2
MOV LEDDA,A
SETB PART2
ACALL DELAY
CLR PART2
MOV A,ZMB3
MOV LEDDA,A
SETB PART3
ACALL DELAY
CLR PART3
MOV A,ZMB4
MOV LEDDA,A
SETB PART4
ACALL DELAY
CLR PART4
JNB ONCK,CONT1
AJMP CONTI
CONT1: RET
;+++++++++++ 显 数 延 时 +++++++++++++
DELAY: MOV TDEO,#3FH
DELAA: NOP
DJNZ TDEO,DELAA
RET
;+++ 将(温OR湿OR照)度值转换成字模 +++
LEDMO: MOV DPTR,#LEDTAB
MOV A,WDZ1
ACALL RDZM
MOV ZMB1,A
MOV A,WDZ2
ACALL RDZM
MOV ZMB2,A
MOV A,WDZ3
JB ONPAS,SDZM1
CJNE A,#0,SDZM1
MOV ZMB3,#0FFH
LJMP SDZM2
SDZM1: ACALL RDZM
MOV ZMB3,A
SDZM2: MOV A,WDZ4
ACALL RDZM
MOV ZMB4,A
RET
RDZM: MOVC A,@A+DPTR
RET
;++++++++ 上 电 检 数 码 管 ++++++++
ONCHK:
MOV ZMB1,#20H
MOV ZMB2,#20H
MOV ZMB3,#20H
MOV ZMB4,#20H
CHK2: INC R2
ACALL CHK1
CJNE R2,#0FFH,CHK2
INC R2
SETB ONCK
RET
;+++ HEX TO DEC OF HIGHT THAN ZERO +++
HTDEC: CLR A ;二到十进制转换
JNB HBIT7,NO128
SETB MAX125
RET
NO128: JNB HBIT6,NO64
ADD A,#64H ;大于等于64
NO64: JNB HBIT5,NO32
ADD A,#32H
NO32: JNB HBIT4,NO16
ADD A,#16H
DA A
NO16: JNB HBIT3,NO8
ADD A,#08H
DA A
NO8: JNB HBIT2,NO4
ADD A,#04H
DA A
NO4: JNB HBIT1,NO2
ADD A,#02H
DA A
NO2: JNB HBIT0,NO1
ADD A,#01H
DA A
NO1: RET
;++++++++ 读 湿 度 值 (00%RH-99%RH) +++++++++++
RDSDZ:
MOV DPTR,#SDTAB ;计数器TH1,TL1值为实际频率值
CLR A ;判断湿度下限
MOVC A,@A+DPTR
INC DPTR
CLR C
CJNE A,FEQH,RSD5
CLR A
MOVC A,@A+DPTR
CLR C
CJNE A,FEQL,RSD5
MOV R6,#0
LJMP RSD3
RSD5: JNC RSD4
SETB 38H
SETB 39H
MOV SDZ2,#0DDH
MOV SDZ3,#0DH ;超出下限
MOV SDZ4,#0DH
LJMP RSDRET
RSD4: MOV R6,#0
INC DPTR
RSD1: CLR A
MOVC A,@A+DPTR
INC DPTR
CLR C
CJNE A,FEQH,RSD2
CLR A
MOVC A,@A+DPTR
CLR C
CJNE A,FEQL,RSD2
LJMP RSD3
RSD2: JC RSD3
INC DPTR
INC R6
CLR C
CJNE R6,#100,RSD1A
RSD1B: SETB 38H
SETB 3AH
MOV SDZ2,#0CCH
MOV SDZ3,#0CH ;超出上限
MOV SDZ4,#0CH
LJMP RSDRET
RSD1A: JC RSD1
CLR C
MOV R6,#0
LJMP RSD1B
RSD3: CLR 38H
CLR 39H
CLR 3AH
MOV A,R6
MOV HEXB,A
SETB SDBJ
CLR A
ACALL HTDEC ;二进制到十进制转换
MOV WDZ1,#0AH
MOV WDZ2,#0AH
MOV SDZ2,A
ANL A,#0FH
MOV SDZ4,A
MOV WDZ4,A
MOV A,SDZ2
ANL A,#0F0H
SWAP A
MOV SDZ3,A
MOV WDZ3,A
RSDRET: RET
;
;+++++++++ 频 率 5 取 1 +++++++++++++++++
;出口:FEQH,FEQL 中间频率
;0区 R0,R1,R2,R3
FQ5P1:
MOV R3,#FEBQA
CF5P2: MOV R2,#FEBQ1
MOV A,R2
MOV R0,A
INC R2
INC R2
MOV A,R2
MOV R1,A
CF5P1: INC R0
INC R1
MOV A,@R0
CLR C
SUBB A,@R1
JNZ HOP1 ;比较高字节
INC R1 ;高字节相等
INC R0
MOV A,@R0
CLR C
SUBB A,@R1
JNC YXCH ;比较低字节
MOV A,@R0
XCH A,@R1 ;小在前,低字节交换
MOV @R0,A
SJMP YXCH
HOP1: JNC NXCH
MOV A,@R0 ;小在前,高字节交换
XCH A,@R1
MOV @R0,A
INC R0
INC R1
MOV A,@R1 ;小在前,低字节交换
XCH A,@R0
MOV @R1,A
SJMP YXCH
NXCH: INC R0
INC R1
YXCH: MOV A,R1
CLR C
SUBB A,R3
JNZ CF5P1
DEC R3
DEC R3
CJNE R3,#FEBQ2,CF5P2
MOV R1,#FEBQ3
MOV A,@R1
MOV FEQH,A
INC R1
MOV A,@R1
MOV FEQL,A
RET
;*********** 字 * 模 * 表 ************
LEDTAB: DB 028H,0EDH,034H,0A4H,0E1H
DB 0A2H,022H,0ECH,020H,0A0H
DB 0FFH,0FEH,0F7H,0BFH,0FFH
;*********** 字 * 模 * 表 ************ afgedpbc ******************
SDTAB: DW 7444,7432,7420,7408,7396,7384,7372
DW 7360,7348,7336,7324,7312,7300,7288,7276,7264,7252
DW 7240,7228,7216,7204,7192,7180,7168,7156,7144,7132
DW 7120,7108,7096,7084,7072,7060,7048,7036,7024,7012
DW 7000,6988,6976,6964,6952,6940,6928,6916,6904,6892
DW 6880,6868,6856,6844,6832,6820,6808,6796,6784,6772
DW 6760,6748,6736,6724,6712,6700,6688,6675,6664,6652
DW 6640,6628,6616,6604,6592,6580,6568,6556,6544,6532
DW 6520,6508,6496,6484,6472,6460,6448,6436,6424,6412
DW 6400,6388,6376,6364,6352,6340,6328,6316,6304,6292
DW 6280,6268,6256,6244
DW 6232,6220,6208,6196,6184,6172,6160,6148,6136,6124
DW 6112,6100,6088,6076,6064,6052,6040,6028,6016,6004
DW 5992,5980,5968,5956,5944,5932,5920,5908,5896,5884
DW 5872,5860,5848,5836,5824,5812,5800,5788,5776,5764
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -