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

📄 swclib.asm

📁 便携式压力传感器
💻 ASM
字号:
D_T_SET:
	MOV     R0,#SPIDBUF
	MOV     @R0,#00H  ;秒值
	INC     R0
	MOV     @R0,#30H  ;分值
	INC     R0
	MOV     @R0,#08H  ;时值    
	INC     R0
	MOV     @R0,#05H ;星期值      
	INC     R0
	MOV     @R0,#03H  ;日值       
	INC     R0
	MOV     @R0,#05H  ;月值     
	INC     R0
	MOV     @R0,#02H  ;年值    
	INC     R0
	MOV     @R0,#00H  ;时间设置标志  
	MOV     R0,#SPIDBUF

	;********************************
	;SPI总线ATMEL DATAFLASH存取测试
	;********************************
	;AT45D04存储卡操作-写
	MOV    SPIPGH,#0
	MOV    SPIPGL,#8
	MOV    SPIADR,#30
	MOV    SPINBYT,#8
	LCALL  AT45D04CARDWRNBYT       ;SPI存储卡写
	RET
TIME_SET:
	LCALL   LCDCLEAR        ;LCD清屏
	MOV     DPTR,#SCRN7310  ;获取选井界面首址
	LCALL   LCDDISPLAY      ;LCD字符显示程序

	;********************************
	;读取并显示时间
	;********************************
	LCALL   DS1629RCV               ;读取实时日历时钟
	LCALL   DS1629TSET
	MOV     R0,#RTCBUF
	LCALL   LCDDISPLAYRAM

TIME_SET1:
	;********************************
	;读取键盘扫描码
	;********************************
	LCALL   KEY
	JB      KEYWB,TIME_SET2
	LJMP    TIME_SET1

TIME_SET2:
	CJNE    A,#KCODE_CNCL,TIME_SET3
	LJMP    MAIN_11                ;按下[取消]键,返回

TIME_SET3:
	CJNE    A,#KCODE_ENTR,TIME_SET1
	MOV     R0,#I2CDBUF 
	MOV     @R0,#0C0H       ;=0C0H(ACCESS CLOCK),即RTC存取操作
	INC     R0
	MOV     @R0,#00H
	INC     R0
	MOV     @R0,#00H
	INC     R0
	MOV     @R0,#00H
	INC     R0
	MOV     @R0,#12H
	INC     R0
	MOV     @R0,#5
	INC     R0
	MOV     @R0,#26H
	INC     R0
	MOV     @R0,#04H
	INC     R0
	MOV     @R0,#02H
	MOV     R0,#I2CDBUF     ;执行I2C器件写操作
	MOV     SLA,#DS1629
	MOV     I2CNUMBYT,#9    ;连续写9个字节
	LCALL   I2CWRNBYTP
	LJMP    MAIN_11

WRCAED:
	MOV     R2,#16
	MOV     R3,#0
WRCAED2:
	MOV     R0,#SPIDBUF
	MOV     R1,#80H
	MOV     DPTR,#CHINESEBMAP;确定字符字模块首地址
	MOV     A,R3            ;取代码
	MOV     B,#80H           ;字模块宽度为32个字节
	MUL     AB              ;代码×16
	ADD     A,DPL           ;字符字模块首地址
	MOV     DPL,A           ;=字模库首地址+代码×16
	MOV     A,B
	ADDC    A,DPH
	MOV     DPH,A
WRCAED1:
	MOVC    A,@A+DPTR
	MOV     @R0,A
	INC     R0
	INC     DPTR
	MOV     A,#0
	DJNZ    R1,WRCAED1
	MOV     A,R3            ;取代码
	MOV     B,#80H           ;字模块宽度为32个字节
	MUL     AB              ;代码×16
	MOV     SPIADR,A
	MOV     A,#WELLDATAL
	ADD     A,B
	MOV     SPIPGL,A
	MOV     SPIPGH,WELLDATAH
	MOV     SPINBYT,#80H
	LCALL   AT45D04CARDWRNBYT     
	LCALL   SPIRDYCHK
	INC     R3
	DJNZ    R2,WRCAED2
	RET

WRCAED_WELL:
	MOV     R2,#16
	MOV     R3,#0

	MOV     R0,#SPIDBUF
	MOV     A,#3
	MOV     @R0,A
	INC     R0
	MOV     A,#1
	MOV     @R0,A
	INC     R0
	MOV     A,#2
	MOV     @R0,A
	INC     R0
	MOV     A,#3FH
	MOV     @R0,A
	INC     R0
	MOV     A,#2
	MOV     @R0,A
	INC     R0
	MOV     A,#1
	MOV     @R0,A
	INC     R0
	MOV     A,#2
	MOV     @R0,A
	INC     R0
	MOV     A,#3
	MOV     @R0,A
	INC     R0
	MOV     A,#0FFH
	MOV     @R0,A
	INC     R0
	MOV     A,#0FFH
	MOV     @R0,A
	INC     R0

	MOV     R0,#SPIDBUF

	MOV     SPIADR,#0
	MOV     A,#WELLDATAL
	ADD     A,B
	MOV     SPIPGL,#WELLDATAL
	MOV     SPIPGH,#WELLDATAH
	MOV     SPINBYT,#20H
	LCALL   SPIRDYCHK
	LCALL   AT45D04CARDWRNBYT     
	RET

WRCAEDC:
	MOV     R3,#1
WRCAEDC2:
	MOV     R0,#SPIDBUF
	MOV     R1,#80H
	MOV     DPTR,#CHINESEBMAP;确定字符字模块首地址
	MOV     A,R3            ;取代码
	MOV     B,#80H           ;字模块宽度为32个字节
	MUL     AB              ;代码×16
	ADD     A,DPL           ;字符字模块首地址
	MOV     DPL,A           ;=字模库首地址+代码×16
	MOV     A,B
	ADDC    A,DPH
	MOV     DPH,A
WRCAEDC1:
	MOVC    A,@A+DPTR
	MOV     @R0,A
	INC     R0
	INC     DPTR
	MOV     A,#0
	DJNZ    R1,WRCAEDC1
	MOV     A,R3            ;取代码
	MOV     B,#80H           ;字模块宽度为32个字节
	MUL     AB              ;代码×16
	MOV     SPIADR,#0;A
	MOV     A,#WELLDATAL
	ADD     A,R3;B
	MOV     SPIPGL,A
	MOV     SPIPGH,WELLDATAH
	MOV     SPINBYT,#80H
	LCALL   AT45D04CARDWRNBYT     
	LCALL   SPIRDYCHK

	RET

RAMWR:
	MOV     R1,#80H
	MOV     A,#55H
	MOV     DPTR,#100H      ;确定字符字模块首地址
RAMWR1:
	MOVX    @DPTR,A         ;取代码
	INC       DPTR
;	INC       A
	DJNZ    R1,RAMWR1
	RET

RAMRD:
	MOV     R1,#80H
	MOV     R0,#80H
	MOV     DPTR,#100H      ;确定字符字模块首地址
RAMRD1:
	MOVX    A,@DPTR
	MOV     @R0,A
	INC     R0
	INC     DPTR
	DJNZ    R1,RAMRD1
	RET

PA_DISP:
	LCALL   IBTD
	;循环控制变量R7=8时,单字节;
	;            R7=16, 双字节。
	;输入:R2 R3
	;输出:R4 R5 R6

	MOV     A,R6
	PUSH    ACC
	PUSH    ACC
	MOV     A,R5
	PUSH    ACC                     ;结果入栈
	PUSH    ACC
	MOV     A,R4
	PUSH    ACC                     ;结果入栈

	MOV     LCDXPG,WELLMING
	MOV     LCDCOL,LIE                
	POP     ACC
	ANL     A,#0FH
	MOV     LCDCHR,A                ;代码:电流千位值
	MOV     A,WELLMING
	SWAP    A
	ANL     A,#07H
	CJNE    A,#00H,DIANLIOU_DISP1
	MOV     DPTR,#ASCFIXEDBMAP
	LCALL   LCDASCIIWR
	LJMP    DIANLIOU_DISP2
DIANLIOU_DISP1:
	MOV     DPTR,#ASCSONGBMAP       ;确定字符字模块首地址
	LCALL   LCDCHNASCWR             ;调用LCD西文ASC写程序
DIANLIOU_DISP2:
	MOV     LCDXPG,WELLMING
	MOV     A,#00H
	ADD     A,LIE
	MOV     LCDCOL,A
	POP     ACC
	SWAP    A
	ANL     A,#0FH
	MOV     LCDCHR,A                ;代码:电流百位值
	MOV     A,WELLMING
	SWAP    A
	ANL     A,#07H
	CJNE    A,#00H,DIANLIOU_DISP3
	MOV     DPTR,#ASCFIXEDBMAP
	LCALL   LCDASCIIWR
	LJMP    DIANLIOU_DISP4
DIANLIOU_DISP3:
	MOV     DPTR,#ASCSONGBMAP       ;确定字符字模块首地址
	LCALL   LCDCHNASCWR             ;调用LCD西文ASC写程序
DIANLIOU_DISP4:
	MOV     LCDXPG,WELLMING
	MOV     A,#08H
	ADD     A,LIE
	MOV     LCDCOL,A
	POP     ACC
	ANL     A,#0FH
	MOV     LCDCHR,A                ;代码:电流十位值
	MOV     A,WELLMING
	SWAP    A
	ANL     A,#07H
	CJNE    A,#00H,DIANLIOU_DISP5
	MOV     DPTR,#ASCFIXEDBMAP
	LCALL   LCDASCIIWR
	LJMP    DIANLIOU_DISP6
DIANLIOU_DISP5:
	MOV     DPTR,#ASCSONGBMAP       ;确定字符字模块首地址
	LCALL   LCDCHNASCWR             ;调用LCD西文ASC写程序
DIANLIOU_DISP6:

	MOV     LCDXPG,WELLMING
	MOV     A,#10H
	ADD     A,LIE
	MOV     LCDCOL,A             
	POP     ACC
	SWAP    A
	ANL     A,#0FH
	MOV     LCDCHR,A                ;代码:电流个位值
	MOV     A,WELLMING
	SWAP    A
	ANL     A,#07H
	CJNE    A,#00H,DIANLIOU_DISP7
	MOV     DPTR,#ASCFIXEDBMAP
	LCALL   LCDASCIIWR
	LJMP    DIANLIOU_DISP8
DIANLIOU_DISP7:
	MOV     DPTR,#ASCSONGBMAP       ;确定字符字模块首地址
	LCALL   LCDCHNASCWR             ;调用LCD西文ASC写程序
DIANLIOU_DISP8:

	MOV     LCDXPG,WELLMING         
	MOV     A,#20H
	ADD     A,LIE
	MOV     LCDCOL,A
	POP     ACC
	ANL     A,#0FH
	MOV     LCDCHR,A                ;代码:电流十分位值
	MOV     A,WELLMING
	SWAP    A
	ANL     A,#07H
	CJNE    A,#00H,DIANLIOU_DISP9
	MOV     DPTR,#ASCFIXEDBMAP
	LCALL   LCDASCIIWR
	LJMP    DIANLIOU_DISPA
DIANLIOU_DISP9:
	MOV     DPTR,#ASCSONGBMAP       ;确定字符字模块首地址
	LCALL   LCDCHNASCWR             ;调用LCD西文ASC写程序
DIANLIOU_DISPA:
	RET

PALI_DISP:
	LCALL   IBTD
	;循环控制变量R7=8时,单字节;
	;            R7=16, 双字节。
	;输入:R2 R3
	;输出:R4 R5 R6

	MOV     A,R6
	PUSH    ACC
	PUSH    ACC
	MOV     A,R5
	PUSH    ACC                     ;结果入栈
	PUSH    ACC
	MOV     A,R4
	PUSH    ACC                     ;结果入栈

	MOV     LCDXPG,WELLMING
	MOV     LCDCOL,LIE                
	POP     ACC
	ANL     A,#0FH
	MOV     LCDCHR,A                ;代码:压力十位值
	MOV     A,WELLMING
	SWAP    A
	ANL     A,#07H
	CJNE    A,#00H,YALI_DISP1
	MOV     DPTR,#ASCFIXEDBMAP
	LCALL   LCDASCIIWR
	LJMP    YALI_DISP2
YALI_DISP1:
	MOV     DPTR,#ASCSONGBMAP       ;确定字符字模块首地址
	LCALL   LCDCHNASCWR             ;调用LCD西文ASC写程序
YALI_DISP2:
	MOV     LCDXPG,WELLMING
	MOV     A,#08H
	ADD     A,LIE
	MOV     LCDCOL,A
	POP     ACC
	SWAP    A
	ANL     A,#0FH
	MOV     LCDCHR,A                ;代码:压力个位值
	MOV     A,WELLMING
	SWAP    A
	ANL     A,#07H
	CJNE    A,#00H,YALI_DISP3
	MOV     DPTR,#ASCFIXEDBMAP
	LCALL   LCDASCIIWR
	LJMP    YALI_DISP4
YALI_DISP3:
	MOV     DPTR,#ASCSONGBMAP       ;确定字符字模块首地址
	LCALL   LCDCHNASCWR             ;调用LCD西文ASC写程序
YALI_DISP4:
	MOV     LCDXPG,WELLMING
	MOV     A,#18H
	ADD     A,LIE
	MOV     LCDCOL,A
	POP     ACC
	ANL     A,#0FH
	MOV     LCDCHR,A                ;代码:压力十分位值
	MOV     A,WELLMING
	SWAP    A
	ANL     A,#07H
	CJNE    A,#00H,YALI_DISP5
	MOV     DPTR,#ASCFIXEDBMAP
	LCALL   LCDASCIIWR
	LJMP    YALI_DISP6
YALI_DISP5:
	MOV     DPTR,#ASCSONGBMAP       ;确定字符字模块首地址
	LCALL   LCDCHNASCWR             ;调用LCD西文ASC写程序
YALI_DISP6:

	MOV     LCDXPG,WELLMING
	MOV     A,#20H
	ADD     A,LIE
	MOV     LCDCOL,A             
	POP     ACC
	SWAP    A
	ANL     A,#0FH
	MOV     LCDCHR,A                ;代码:压力百分位值
	MOV     A,WELLMING
	SWAP    A
	ANL     A,#07H
	CJNE    A,#00H,YALI_DISP7
	MOV     DPTR,#ASCFIXEDBMAP
	LCALL   LCDASCIIWR
	LJMP    YALI_DISP8
YALI_DISP7:
	MOV     DPTR,#ASCSONGBMAP       ;确定字符字模块首地址
	LCALL   LCDCHNASCWR             ;调用LCD西文ASC写程序
YALI_DISP8:
 	MOV     LCDXPG,WELLMING         
	MOV     A,#28H
	ADD     A,LIE
	MOV     LCDCOL,A
	POP     ACC
	ANL     A,#0FH
	MOV     LCDCHR,A                ;代码:压力千分位值
	MOV     A,WELLMING
	SWAP    A
	ANL     A,#07H
	CJNE    A,#00H,YALI_DISP9
	MOV     DPTR,#ASCFIXEDBMAP
	LCALL   LCDASCIIWR
	LJMP    YALI_DISPA
YALI_DISP9:
	MOV     DPTR,#ASCSONGBMAP       ;确定字符字模块首地址
	LCALL   LCDCHNASCWR             ;调用LCD西文ASC写程序
YALI_DISPA:
	RET

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -