⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 11.asm

📁 湿度采集模块
💻 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 + -