?? 新建 文本文檔.txt
字號:
ORG 0000H ;定位
LJMP MAIN ;跳轉到MAIN主程序
;
ORG 0003H ;定位
LJMP IT_0 ;轉入INT0的中斷服務程序
;
ORG 000BH ;定位
LJMP IT_1 ;轉入INT0的中斷服務程序
;
ORG 0100H ;定位
MAIN: MOV R6,#32H ;將50送R6
ANL P3,#4FH ;將P3.4、P3.5、P3.7置為0,使輸出電壓為0.0V
MOV P1,#0FFH ;將0FFH送P1
SETB P3.0 ;將P3.0置1
CLR P3.1 ;將P3.1置0
MOV R2,#0CH ;將0CH送R2
LCALL DELAY ;調用DELAY延時子程序
SETB P3.1 ;將P3.1置1
CLR P3.0 ;將P3.0置0
MOV R2,#0CH ;將0CH送R2
LCALL DELAY ;調用DELAY延時子程序
DJNZ R6,MAIN ;若R6-1不等于0,跳轉到MAIN
MOV P1,#00H ;將00H送P1
MOV R2,#25H ;延時1S
LCALL DELAY ;調用DELAY延時子程序
SETB EX0 ;開INT0中斷
SETB EX1 ;INT1中斷
SETB EA ;開CPU中斷
SETB IT0 ;將INT0設為負邊沿觸發
SETB IT1 ;將INT0設為負邊沿觸發
MOV R7,#00H ;將00H送R7
LOOP: MOV A,R7 ;將R7值送A
MOV DPTR,#TABLE0 ;將TABLE0地址送DPTR
MOVC A,@A+DPTR ;查表,將查到的值送A
ANL P3,A ;將A值與P3值相與,結果送P3
MOV DPTR,#TABLE1 ;將TABLE1地址送DPTR
MOVC A,@A+DPTR ;查表,將查到的值送A
ORL P3,A ;將A值與P3值相或,結果送P3
MOV DPTR,#TABLE2 ;將TABLE2地址送DPTR
MOVC A,@A+DPTR ;查表,將查到的值送A
MOV P1,A ;將A值送P1
SETB P3.0 ;將P3.0置1
CLR P3.1 ;將P3.1置0
MOV R2,#0CH ;將0CH送R2
LCALL DELAY ;調用DELAY延時子程序
MOV DPTR,#TABLE3 ;將TABLE3地址送DPTR
MOVC A,@A+DPTR ;查表,將查到的值送A
MOV P1,A ;將A值送P1
SETB P3.1 ;將P3.1置1
CLR P3.0 ;將P3.0置0
MOV R2,#0CH ;將0CH送R2
LCALL DELAY ;調用DELAY延時子程序
SJMP LOOP ;跳轉到LOOP循環
;
ORG 0200H ;定位
IT_0: MOV R2,#14H ;將14H置送R2
LCALL DELAY ;調用DELAY延時子程序(延時約為57ms)
JB P3.2,EXIT0 ;若INT0(P3.2)為1,說明為干擾信號,退出
INC R7 ;若INT0(P3.2)為0,將R7加1
CJNE R7,#07H,EXIT0 ;當R7值不為7時,跳轉到EXIT0
MOV R7,#00H ;當R7值為7時,令R7等于0
EXIT0: RETI ;INT0中斷返回
;
IT_1: MOV R2,#14H ;將14H置送R2
LCALL DELAY ;調用DELAY延時子程序(延時約為57ms)
JB P3.3,EXIT1 ;若INT1(P3.3)為1,說明為干擾信號,退出
DEC R7 ;若INT0(P3.3)為0,將R7減1
CJNE R7,#0FFH,EXIT1 ;當R7值不為0FFH時,跳轉到EXIT1
MOV R7,#06H ;當R7值為0FFH時,令R7等于6
EXIT1: RETI ;INT1中斷返回
;
TABLE0:DB 4FH,4FH,4FH,4FH,4FH,4FH,4FH,4FH ;控制信號
作者: czha1yahoo
2008-6-5 15:25 回復此發言 ________________________________________
2 采用AT89C2051的數字可調穩壓電源單片機源程序
TABLE1:DB 00H,10H,20H,30H,80H,90H,0A0H,0B0H ;控制信號
TABLE2:DB 0CFH,0E6H,0EDH,0FDH,0EFH,03H ;第一數碼管位顯示信號
TABLE3:DB 3FH,6DH,3FH,3FH,3FH,5BH ;第二數碼管位顯示信號
;以下為通用延時子程序
;當R2=0CH時,延時約為10ms;當R2=14H時,延時約為57ms
DELAY:PUSH 02H ;將R2中的值推入堆箋
LP1: PUSH 02H ;將R2中的值推入堆箋
LP2: PUSH 02H ;將R2中的值推入堆箋
LP3: DJNZ R2,LP3 ;若R2-1不為0,跳轉到LP3
POP 02H ;將堆箋中值彈出到R2中
DJNZ R2,LP2 ;若R2-1不為0,跳轉到LP2
POP 02H ;將堆箋中值彈出到R2中
DJNZ R2,LP1 ;若R2-1不為0,跳轉到LP1
POP 02H ;將堆箋中值彈出到R2中
DJNZ R2,DELAY ;若R2-1不為0,跳轉到DELAY
RET ;子程序返回
END ;結束
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -