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

📄 cx.txt

📁 在显示频率输出的同时显示AD值(数码显示) 程序实例(ad25dis.asm
💻 TXT
字号:
程序实例(ad25dis.asm): 

ORG 0000H 

AJMP MAIN 

ORG 001BH 

AJMP DIN1 

MAIN: 

64 

;定义频率200和300////////////////////////////////// 

F2H EQU 30H 

F2L EQU 31H 

F3H EQU 32H 

F3L EQU 33H 

;////////////////////////////////////////////////// 

DISFLAG EQU 34H ;显示标志 

DISL EQU 35H ;显示低位 

DISH EQU 36H ;显示高位 

ADNUMBER EQU 37H ;AD值 

DISADL EQU 38H ;显示AD低位 

DISADH EQU 39H ;显示AD高位 

;定义频率保持初值////////////////////////////////// 

MOV R1,#100 

MOV R2,#02H 

;////////////////////////////////////////////////// 

MOV ADNUMBER,#00H ;AD转换数初值 

;显示高低位初值/////////////////////////////// 

MOV DISADL,#00H 

MOV DISADH,#00H 

;////////////////////////////////////////////////// 

;显示赋初值//////////////////////////////////////// 

MOV DISFLAG,#00H 

MOV DISL,#00H 

MOV DISH,#00H 

;////////////////////////////////////////////////// 

;频率赋初值//////////////////////////////////////// 

MOV F2H,#0F6H 

65 

MOV F2L,#3BH 

MOV F3H,#0F8H 

MOV F3L,#2FH 

;////////////////////////////////////////////////// 

CLR P1.0 ;在P1.0口产生一 

个低电平,一个脉冲是由一个高电平和一个低电平组成的 

MOV TMOD,#00010000B;定时器工作于方 

式1 

MOV TH1,F2H 

MOV TL1,F2L ;200HZ输出 

SETB EA ;开总中断 

SETB TR1 ;开定时器1运行 

SETB ET1 ;开定时器1允许 

ADDIS: 

ACALL AD ;呼叫AD子程序 

;将转换的数字量屏蔽高位低位送DISADL保存//////////// 

MOV A,ADNUMBER 

ANL A,#0FH 

MOV DISADL,A 

;////////////////////////////////////////////////// 

;将转换的数字量屏蔽低位,将高位送DISADH保存//////// 

MOV A,ADNUMBER 

ANL A,#0F0H 

SWAP A 

MOV DISADH,A 

;////////////////////////////////////////////////// 

DISPLAY: 

MOV A,DISADL 

66 

MOV DPTR,#SETTAB 

MOVC A,@A+DPTR 

MOV SBUF,A 

D1: JNB TI,D1 

CLR TI 

MOV A,DISADH 

MOV DPTR,#SETTAB 

MOVC A,@A+DPTR 

MOV SBUF,A 

D2: JNB TI,D2 

CLR TI 

MOV A,DISL 

MOV DPTR,#SETTAB 

MOVC A,@A+DPTR 

MOV SBUF,A 

D3: JNB TI,D3 

CLR TI 

MOV A,DISH 

MOV DPTR,#SETTAB 

MOVC A,@A+DPTR 

MOV SBUF,A 

D4: JNB TI,D4 

CLR TI 

ACALL DELAY 

AJMP ADDIS 

LOOP: AJMP LOOP 

DIN1: 

PUSH ACC 

67 

CPL P1.0 ;取反P1.0口,实际是为了 

不断的将p1.0的电平关系转换,即产生了频率 

;频率保持时间////////////////////////////////////// 

DJNZ R1,RE 

MOV R1,#100 

DJNZ R2,RE 

MOV R2,#02H 

;////////////////////////////////////////////////// 

INC DISFLAG 

MOV ` A,DISFLAG 

CJNE A,#0AH,FF 

MOV DISFLAG,#00H 

INC DISL 

MOV A,DISL 

CJNE A,#0AH,FF 

MOV DISL,#00H 

INC DISH 

;////////////////////////////////////////////////// 

FF: MOV A,F2H 

CJNE A,F3H,XIA ;频率高位到300HZ的高位 

了吗? 

AJMP JIA 

;频率高位没到300HZ的高位值,直接将低位值加1/////// 

XIA: INC F2L 

MOV A,F2L 

CJNE A,#00H,RE 

INC F2H 

MOV A,F2H 

68 

CJNE A,F3H,RE 

;////////////////////////////////////////////////// 

;频率高位加到300HZ的高位值了,低位加一,到300HZ的低 

位值了吗,没到出去,到了关定时器/////////////////// 

JIA: 

INC F2L ;到了将200HZ频率的低位 

加1 

MOV A,F2L 

CJNE A,#F3L,RE 

CLR TR1 

;////////////////////////////////////////////////// 

RE: 

MOV TH1,F2H 

MOV TL1,F2L 

POP ACC 

RETI 

AD: MOV DPTR,#7F00H ;指向转换地址 

MOV A,#03H ;指向转换口 

MOVX @DPTR,A ;转换 

MOV 40H,#64H 

D6: DJNZ 40H,D6 ;等100微秒转换完 

MOVX A,@DPTR ;转换后的值给A 

MOV ADNUMBER,A ;转换的值给30H 

RET 

DELAY: 

MOV R3,#0FFH 

D5: DJNZ R3,D5 

RET 

69 

SETTAB: 

DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H, 

0FEH,0F6H 

DB 0EEH,3EH,9CH,7AH,9EH,8EH ;数显代码 

END 

⌨️ 快捷键说明

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