?? dianyabiao.asm
字號(hào):
SCLK BIT P1.2;A/D,D/A轉(zhuǎn)換時(shí)鐘
DIO BIT P1.3;A/D轉(zhuǎn)換數(shù)據(jù)輸出及D/A轉(zhuǎn)換的數(shù)字量輸出
ADCS BIT P1.4;A/D轉(zhuǎn)換器的使能
ADTEMP EQU 30H
;下面四個(gè)地址用于存放測(cè)得電壓轉(zhuǎn)換后的電壓值的四位
VOL0 EQU 31H;整數(shù)位
VOL1 EQU 33H;最高小數(shù)位
VOL2 EQU 34H
VOL3 EQU 35H
;用36H-45H的存儲(chǔ)空間存儲(chǔ)AD采樣的數(shù)據(jù),并且42H存最小值,49H
;存最大值
ADDATAH EQU 46H
ADDATA EQU 47H
ORG 2000H
DB 00H,01H,02H,03H,04H,05H,06H,07H
DB 06H,05H,04H,03H,02H,01H,00H,38H
ORG 0000H
LJMP START
START:
MOV SP,#60H
MOV 31H,#00H
MOV 32H,#2EH;小數(shù)點(diǎn)對(duì)應(yīng)lcd的字符碼
MOV 33H,#00H
MOV 34H,#00H
MOV 35H,#00H
LCALL LCDINI
LCALL WCG
LOOP:
;LCALL AD
LCALL GETAD
LCALL FILTER
LCALL TRANSDATA
LCALL WDD
LCALL DELAY
LCALL DELAY
LJMP LOOP
BF:;檢測(cè)忙標(biāo)志BF
CLR A
MOV DPTR,#0A001H
MOVX A,@DPTR
JB ACC.7,BF
RET
;寫數(shù)據(jù)到指令寄存器IR
;R1:暫存指令碼
WI:
MOV A,R1
MOV DPTR,#0A000H
MOVX @DPTR,A
RET
;寫數(shù)據(jù)到數(shù)據(jù)寄存器DR
;R2:暫存字符碼或字符字模數(shù)據(jù)
WD:
MOV A,R2
MOV DPTR,#0A002H
MOVX @DPTR,A
RET
DELAY:
MOV R7,#0FFH
LOOP0:
MOV R6,#0FFH
DJNZ R6,$
DJNZ R7,LOOP0
RET
;寫自定義字符字模數(shù)據(jù)到CGRAM
WCG:
MOV R1,#40H
LCALL BF
LCALL WI
MOV R4,#00H
LOOP4:
MOV DPTR,#TAB
MOV A,R4
MOVC A,@A+DPTR
MOV R2,A
LCALL BF
LCALL WD
INC R4
CJNE R4,#3FH,LOOP4
RET
;指令初始化模塊
LCDINI:
MOV R3,#03H
INITO:
MOV R1,#30H; 功能設(shè)置
LCALL WI
DJNZ R3,INITO
MOV R1,#01H;清顯示
LCALL BF
LCALL WI
MOV R1,#06H; 輸入方式設(shè)置:AC自動(dòng)加1
LCALL BF
LCALL WI
MOV R1,#0CH; 開顯示
LCALL BF
LCALL WI
RET
WDD:
LOOP2:
MOV R1,#80H
LCALL BF
LCALL WI
MOV R0,#31H
LOOP1:
MOV A,@R0
MOV R2,A
LCALL BF
LCALL WD
INC R0
CJNE R0,#36H,LOOP1
RET
ADDELAY:
MOV R5,#20
ADDELAY1: DJNZ R5,ADDELAY1;延時(shí)24個(gè)振蕩周期
RET
AD:
SETB ADCS
ACALL ADDELAY
CLR ADCS
ACALL ADDELAY
MOV R2,#10
RR0:
SETB SCLK
NOP
CLR SCLK
DJNZ R2,RR0
ACALL ADDELAY
MOV A,#00
MOV C,DIO
RLC A
SETB SCLK
NOP
CLR SCLK
MOV C,DIO
RLC A
MOV ADDATAH,A
MOV R2,#8
MOV A,#00
RR2:
SETB SCLK
NOP
CLR SCLK
MOV C,DIO
RLC A
DJNZ R2,RR2
MOV ADDATA,A
RET
GETAD:;獲取八組AD數(shù)據(jù),間隔1152個(gè)機(jī)器周期
LCALL AD
MOV 36H,ADDATA
MOV 37H,ADDATAH
LCALL GETDELAY
LCALL AD
CLR C
MOV A,36H
SUBB A,ADDATA
MOV A,37H
SUBB A,ADDATAH
JNC GETAD00
MOV 44H,ADDATA
MOV 45H,ADDATAH
SJMP GETAD01
GETAD00:
MOV 44H,36H
MOV 45H,37H
MOV 36H,ADDATA
MOV 37H,ADDATAH
GETAD01:
LCALL GETDELAY
MOV R0,#38H
GETONE:
LCALL AD
LOWER:
CLR C
MOV A,36H
SUBB A,ADDATA
MOV A,37H
SUBB A,ADDATAH
JC BIGGER
MOV @R0,36H
INC R0
MOV @R0,37H
INC R0
MOV 36H,ADDATA
MOV 37H,ADDATAH
SJMP CONTINUE
BIGGER:
CLR C
MOV A,44H
SUBB A,ADDATA
MOV A,45H
SUBB A,ADDATAH
JNC MIDDLE
MOV @R0,44H
INC R0
MOV @R0,45H
INC R0
MOV 44H,ADDATA
MOV 45H,ADDATAH
SJMP CONTINUE
MIDDLE:
MOV @R0,ADDATA
INC R0
MOV @R0,ADDATAH
INC R0
CONTINUE:
LCALL GETDELAY
CJNE R0,#44H,GETONE
RET
GETDELAY:
MOV R5,#6FH
GETDELAY0:
NOP
NOP
DJNZ R5,GETDELAY0
RET
FILTER:;濾波子程序
MOV R0,#38H
MOV 48H,#00H;存放中間的余數(shù)
MOV ADDATA,#00H
MOV ADDATAH,#00H
CONFIL0:
MOV A,@R0
MOV B,#06H
DIV AB
ADD A,ADDATA
MOV ADDATA,A
MOV A,B
ADD A,48H
MOV 48H,A
INC R0
MOV A,@R0
ADD A,ADDATAH
MOV ADDATAH,A
INC R0
CJNE R0,#44H,CONFIL0
MOV A,48H
MOV B,#06H
DIV AB
ADD A,ADDATA
MOV ADDATA,A
MOV A,ADDATAH
MOV B,#06H
DIV AB
MOV ADDATAH,A
MOV A,B
JZ FILOUT
MOV B,#43
MUL AB
CLR C
ADDC A,ADDATA
MOV ADDATA,A
MOV A,ADDATAH
ADDC A,#00H
MOV ADDATAH,A
FILOUT:
RET
TRANSDATA:;用于將數(shù)字量轉(zhuǎn)換為電壓值
MOV A,ADDATA
ANL A,#01H
MOV B,#05H
MUL AB
ADD A,#30H;轉(zhuǎn)化為lcd的顯示字符碼
MOV VOL3,A
MOV VOL0,ADDATAH;本來是addatah*1
MOV A,ADDATAH
MOV B,#02H
MUL AB
MOV VOL1,A
MOV A,ADDATAH
MOV B,#08H
MUL AB
MOV VOL2,A
MOV A,ADDATA
ANL A,#0FEH
RR A
MOV B,#10
DIV AB
ADD A,VOL1
MOV VOL1,A
MOV A,B
ADD A,VOL2
MOV B,#10
DIV AB
ADD A,VOL1
MOV VOL1,A
MOV A,B
ADD A,#30H;轉(zhuǎn)化為lcd的顯示字符碼
MOV VOL2,A
MOV A,VOL1
MOV B,#10
DIV AB
ADD A,VOL0
ADD A,#30H;轉(zhuǎn)化為lcd的顯示字符碼
MOV VOL0,A
MOV A,B
ADD A,#30H;轉(zhuǎn)化為lcd的顯示字符碼
MOV VOL1,A
RET
TAB:
DB 1FH,00H,00H,00H,00H,00H,00H,00H
DB 00H,1FH,00H,00H,00H,00H,00H,00H
DB 00H,00H,1FH,00H,00H,00H,00H,00H
DB 00H,00H,00H,1FH,00H,00H,00H,00H
DB 00H,00H,00H,00H,1FH,00H,00H,00H
DB 00H,00H,00H,00H,00H,1FH,00H,00H
DB 00H,00H,00H,00H,00H,00H,1FH,00H
DB 00H,00H,00H,00H,00H,00H,00H,1FH
END
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -