这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 过程检定(数码显示)

共1条 1/1 1 跳转至

过程检定(数码显示)

助工
2007-08-04 07:23:55     打赏

程序实例(search.asm):

ORG 0000H

AJMP MAIN

ORG 001BH

AJMP DIN1

MAIN:

;定义频率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高位

ADTIME EQU 40H ;AD转换时间值

SCHNUMBER EQU 41H ;搜频比较值

HOLDADL EQU 42H

70

HOLDADH EQU 43H ;搜到的AD值

HOLDFL EQU 44H

HOLDFH EQU 45H ;搜到的频率值

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

MOV SCHNUMBER,#00H

MOV HOLDADL,#00H

MOV HOLDADH,#00H

MOV HOLDFL,#00H

MOV HOLDFH,#00H ;赋初值

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

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

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

MOV F2L,#3BH

MOV F3H,#0F8H

71

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

MOV DPTR,#SETTAB

MOVC A,@A+DPTR

MOV SBUF,A

D1: JNB TI,D1

72

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

;过程检定,即模拟搜到极值//////////////////////

MOV A,ADNUMBER

CLR C

SUBB A,SCHNUMBER ;取AD值与初值比较

JNC SW

;搜频是否完成,完成去显示搜到的值,没有继续搜//

MOV A,DISH

CJNE A,#05H,ADDIS1

73

MOV A,DISL

CJNE A,#00H,ADDIS1

AJMP DISSEARCH

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

;始终将初值赋于最大值,并将此时的频率与AD值保存

SW: MOV SCHNUMBER,ADNUMBER

MOV HOLDADL,DISADL

MOV HOLDADH,DISADH

MOV HOLDFL,DISL

MOV HOLDFH,DISH

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

CJNE A,#05H,ADDIS1

MOV A,DISL

CJNE A,#00H,ADDIS1

AJMP DISSEARCH

ADDIS1:

AJMP ADDIS

;搜到的频率与AD值显示/////////////////////////

DISSEARCH:

MOV A,HOLDADL

MOV DPTR,#SETTAB

MOVC A,@A+DPTR

MOV SBUF,A

D11: JNB TI,D11

CLR TI

MOV A,HOLDADH

MOV DPTR,#SETTAB

MOVC A,@A+DPTR

74

MOV SBUF,A

D12: JNB TI,D12

CLR TI

MOV A,HOLDFL

MOV DPTR,#SETTAB

MOVC A,@A+DPTR

MOV SBUF,A

D13: JNB TI,D13

CLR TI

MOV A,HOLDFH

MOV DPTR,#SETTAB

MOVC A,@A+DPTR

MOV SBUF,A

D14: JNB TI,D14

CLR TI

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

LOOP: AJMP LOOP

DIN1:

PUSH ACC

CPL P1.0 ;取反P1.0口,实际是为了不断的将

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

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

DJNZ R1,RE

MOV R1,#100

DJNZ R2,RE

MOV R2,#02H

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

INC DISFLAG

75

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

CJNE A,F3H,RE

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

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

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

JIA:

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

MOV A,F2L

CJNE A,#F3L,RE

CLR TR1

76

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

RE:

MOV TH1,F2H

MOV TL1,F2L

POP ACC

RETI

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

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

MOVX @DPTR,A ;转换

MOV ADTIME,#64H

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

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

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

RET

DELAY:

MOV R3,#0FFH

D5: DJNZ R3,D5

RET

SETTAB:

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

0FEH,0F6H

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

END

77




关键词: 过程     检定     数码     显示     频率     高位     转换    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]