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

📄 新建 文本文档.txt

📁 基于AT89C2051的可调稳压电源的ASM源代码
💻 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 + -