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

📄 ң

📁 嵌入式程序
💻
字号:
#include <def.inc>
      ORG  0000H
           LJMP   START

      ORG  0003H
           CLR   EX0
           CLR   EX1
           RETI
     
      ORG  000BH 
           JMP    INT_T0 

      ORG  0013H
           CLR   EX0
           CLR   EX1
           RETI

;--------  T0 中断 ----------                                   
INT_T0:    JNB    TI,    INT_T0A
           MOV    TL0,   #DATA_TL0_5mS        ; T0 = 5mS
           MOV    TH0,   #DATA_TH0_5mS
           SETB   CLICK5mS 
	   CLR    IR
           RETI
INT_T0A:   MOV    TL0,   #DATA_TL0_13uS       ; T0 = 13uS
           MOV    TH0,   #DATA_TH0_13uS
	   JB     P3.1,   INT_T0B
	   CPL    IR
	   RETI
INT_T0B:   CLR    IR
           RETI
;--------  主程序 ---------- 

;---------  重置堆栈  -------------  
START:     MOV   SP,      #NEWSP   

;----------  端口初始化  -----------
;IO初始化
           MOV   P1M0,    #00000000B        ;推挽:P1.6 
           MOV   P1M1,    #01000000B

           MOV   P3M0,    #00000000B        ;推挽:P3.1 
           MOV   P3M1,    #00000010B

           CLR   IR 
	   SETB  P3.1
;---------  定时器设置  ------------
           MOV   TMOD,    #21h                ; C/T0 mode is 1 and C/T1 'S MOD is 2

           MOV   TL0,     #DATA_TL0_5mS       ;初值
           MOV   TH0,     #DATA_TH0_5mS   
           SETB  TR0                          ;启动

           MOV   PCON,  #10000000B            ;设置波特率
	   MOV   TH1,   #DATA_TH1
           SETB  TR1
;---------  串口设置  ------------
           MOV   SCON,  #01000000B            ;设置串口工作方式,只发送,不接收

;---------  中断设置  -------------
           MOV   IE,    #10000010B            ; 开放C/T0  

;---------  变量初始化  ------------
;	   MOV   POWLED,    #10
           SETB  TI                           ;串口空闲

;---------  变量初始化  ------------
           MOV   CMD,     #NO_CMD
	   CLR   CLICK5mS
           MOV   COUNT_KEY,       #N_KEY        ;重置统计次数和初值
	   MOV   COUNT_K_OFF1,    #Kn_ORG 
	   MOV   COUNT_K_ON1,     #Kn_ORG
	   MOV   COUNT_K_OFF2,    #Kn_ORG
	   MOV   COUNT_K_ON2,     #Kn_ORG
	   MOV   COUNT_K_MODE,    #Kn_ORG

INI:	   MOV   PWCH,   #PWCH_DATA
	   MOV   PWCL,   #PWCL_DATA    
;---------  主循环  --------------
MAINLOOP:  ;MOV   PCON,    #IDLE
           ;NOP
           JBC   CLICK5mS,   TASK_5mS              ;如果5mS到,    则执行5mS任务    
           MOV   A,    CMD
           CJNE  A,    #NO_CMD,  TASK_CMD          ;如果指令非空, 则执行指令                     
           JMP   MAINLOOP   
     
TASK_CMD:  JNB   TI,      $
           CLR   TI
           MOV   TH0,    #DATA_TH0_13uS
           MOV   TL0,    #DATA_TL0_13uS
           MOV   SBUF,   CMD
           MOV   CMD,    #NO_CMD
           MOV   PWCH,   #PWCH_DATA
	   MOV   PWCL,   #PWCL_DATA 
           JMP   MAINLOOP
;-----------------------------------------------
EXIT_5mSA: JMP   EXIT_5mS    
;--------  TASK5mS  --------------------------
TASK_5mS:  SETB  LED

	   DJNZ  POWLED,    T5mS_0
	   CLR   LED 
	   MOV   POWLED,    #200

T5mS_0:    JB    K_OFF1,  T5mS_1             ;统计按键,按下则+1
           INC   COUNT_K_OFF1
T5mS_1:    JB    K_ON1,  T5mS_2   
           INC   COUNT_K_ON1
T5mS_2:    JB    K_OFF2,  T5mS_3   
           INC   COUNT_K_OFF2
T5mS_3:    JB    K_ON2,  T5mS_4   
           INC   COUNT_K_ON2
T5mS_4:    JB    K_MODE,  T5mS_5   
           INC   COUNT_K_MODE

T5mS_5:    DJNZ  COUNT_KEY,   EXIT_5mSA         ;没到统计次数,则退出
           STA_KEY   CMD_OFF1,   COUNT_K_OFF1,  STA_OFF1  ;CMD<=按键值
           STA_KEY   CMD_ON1,    COUNT_K_ON1,   STA_ON1
           STA_KEY   CMD_OFF2,   COUNT_K_OFF2,  STA_OFF2
           STA_KEY   CMD_ON2,    COUNT_K_ON2,   STA_ON2
           STA_KEY   CMD_MODE,   COUNT_K_MODE,  STA_MODE
           
           MOV   COUNT_KEY,       #N_KEY        ;重置统计次数和初值
	   MOV   COUNT_K_OFF1,    #Kn_ORG 
	   MOV   COUNT_K_ON1,     #Kn_ORG
	   MOV   COUNT_K_OFF2,    #Kn_ORG
	   MOV   COUNT_K_ON2,     #Kn_ORG
	   MOV   COUNT_K_MODE,    #Kn_ORG

	   DJNZ  PWCL,    EXIT_5mS
	   DJNZ  PWCH,    EXIT_5mS
	   SETB  EX0
	   SETB  EX1
           SETB  LED
           MOV   PCON,    #POWDN
	   NOP
	   JMP   INI

EXIT_5mS:  JMP   MAINLOOP

          END

⌨️ 快捷键说明

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