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

📄 变比.asm

📁 51 系列TIMER2应用,在STC51单片机上的应用,在测试板上应用过.
💻 ASM
字号:
     
FUWEI   EQU   11H
JISHU   EQU   10H    
        ORG     0
       JMP     START
       ORG     0BH
       JMP     INT_T0
       ORG     30H
START:  
       MOV     SP,#5FH      ;  初始堆栈
       MOV     TMOD,#00100001B;计数器0工作方式1
       MOV     TH0,#3CH
       MOV     TL0,#0B0H
       SETB    EA
       SETB    ET0             ;开T0中断  
       MOV     SP,#5FH      ;  初始堆栈
       SETB    FUWEI
       MOV     P1,#00100001B ;上电复位除P3.1均为低电平
       MOV     P3,#10111010B		
/*************MAIN***********/
LOOP:  CALL    KEY       ;调用键盘处理
       JNB     F0,KEYEXT;没有键按下退出
       AJMP    KEYCL;有键按下转键值处理
KEYEXT:
       NOP
       AJMP    LOOP
/*****************KEYCL********************/
KEYCL:  MOV    A,B       ;获取键值
        JB     ACC.7,KS2
	     JB     ACC.1,KS1
        RET
/*****************ERET************/
;复位键按下以后的操作
KS2:     
         JNB   JISHU,FU_WEI
         MOV     P1,#00100001B ;上电复位除P3.1均为低电平
         MOV     P3,#10110010B
         AJMP    LOOP
FU_WEI:  
      	 SETB  P1.5
         CALL  DELAY
         SETB  P1.5
         LCALL  DELAY
         SETB  P1.1
			CALL  DELAY
	      SETB  P1.0
	      AJMP  LOOP
/*********************************/
;开始键按下以后的操作
KS1:    
        JNB  FUWEI,LOOP
        CLR  P1.0  
        MOV  R3,#0
        MOV  R0,#0
        MOV  R1,#0
        CLR  JISHU
        CLR  FUWEI
        SETB  TR0;定时计数0器开始运行 
        JMP   LOOP
         ;;;;;;;;检测P3.7有没有按下
/*********************KEY******************/    
KEY:    CLR     F0   
        ORL     P3,#10000010B
        MOV     A,P3
        ORL     A,#01111101B
        CPL     A
        JZ      KEYRET     ;无键按下,返回
        LCALL   DELAY
        ORL     P3,#10000010B
        MOV     A,P3
        ORL     A,#01111101B
        CPL     A
        JZ      KEYRET    ;无键按下,返回
	     MOV   B,A
	     SETB  F0
;没有键按下退出*****************
KEYRET:
      NOP
      RET   
/*;以下是中断程序占用资源R3*/
INT_T0:        ;定时器T0的中断响应程序
    PUSH   ACC
    PUSH   PSW
    MOV   TH0,#3CH
    MOV   TL0,#0B0H
    INC  R1
    CJNE  R1,#5,TUIC
    MOV  R1,#0
    JB   JISHU,I_N2
    CLR  P1.5
    CPL  P3.3     ;P3.3输出60次500毫秒高电平500毫秒第电平。
    INC   R0
    CJNE  R0,#8,I_N1
    SETB  P1.5
     MOV  R0,#0
I_N1: 
      INC   R3
      CJNE   R3,#120,SMA 
      SETB  JISHU
      MOV  R3,#0
/*计时60秒以后执行的操作*/
      SETB  P1.5
      LCALL  DELAY
      SETB  P1.1
      SETB  P3.2
       LCALL  DELAY
      SETB  P1.0
      CLR  P3.3 
      CALL  DELAY1
      CLR  P3.2
I_N2: INC  R3
      CJNE   R3,#116,TUIC
      CLR  TR0
      SETB  FUWEI
      SETB  P3.3
      POP   PSW
      POP   ACC
      RETI
SMA:    JB  P1.1,TUIC
        MOV  A,P3          ;检测P3。4和P3.5的状态
        JNB  ACC.4,GN1     ;P3.4如果为0则转移
        JNB  ACC.5,TUIC    ;如果P3.4为1P3.5为0则退出
        SETB  P1.4
        SETB  P1.7
        SETB  P3.0
	CLR  P1.3
	CLR  P1.2
TUIC:    NOP
         MOV   TH0,#3CH
         MOV   TL0,#0B0H
         POP PSW
	 POP  ACC
         RETI
/************P3.4为0时检测P3.5**************/

GN1:    JNB  ACC.5,GON1      

/***************P3.4为0时P3.5为1时***********/ 
        SETB  P3.0
        SETB  P1.3
        CLR  P1.4
        CLR  P1.7
        CLR  P1.2
        POP PSW
			POP  ACC
        RETI
/***********P3.4 ;P3.5为0时*****************/ 
GON1:    SETB  P1.2
         CLR  P1.3
	 CLR  P1.7
	 CLR  P1.4
	 CLR  P3.0
         POP PSW
	 POP  ACC
         RETI
       
/////////////////////////////////////////////

DELAY:   MOV   R6,#85
D1:      MOV   R7,#248
         DJNZ   R7,$
         DJNZ   R6,D1
         RET
DELAY1:  
	CALL  DELAY
	CALL  DELAY
	CALL  DELAY
         MOV   R6,#250
D2:      MOV   R7,#250
D3:      DJNZ   R7,D3
         DJNZ   R6,D2
         RET

END

⌨️ 快捷键说明

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