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

📄 fashechengxu.asm

📁 8051的遥控温度控制红外发射程序
💻 ASM
字号:
H:\实践\fashechengxu.asm 12/13/07 23:07:32
ORG 0000H
AJMP MAIN
ORG 30H
MAIN:MOV SP,#5FH
LOOP:ACALL KEY
     JNB F0,LNEXT
     ACALL KEYPROC
LNEXT:AJMP LOOP
;-------------------------------------------------------------------------------------------------------------
----
KEY:
CLR F0 ;清F0,表示无键按下。
ORL P1,#00111100B ;将P3口的接有键的四位置1
MOV A,P1 ;取P3的值
ORL A,#11000011B ;将其余4位置1
CPL A ;取反
JZ K_RET ;如果为0则一定无键按下
ACALL DELAY ;否则延时去键抖
ORL P1,#00111100B
MOV A,P1
ORL A,#11000011B
CPL A
JZ K_RET
MOV B,A ;确实有键按下,将键值存入B中
SETB F0 ;设置有键按下的标志
K_RET: 
ORL P1,#00111100B ;此处循环等待键的释放
MOV A,P3
ORL A,#11000011B
CPL A
JZ K_RET1 ;直到读取的数据取反后为0说明键释放了,才从键盘处理程序中返回
AJMP K_RET
K_RET1: 
RET
DELAY:
MOV R7,#100
D1: MOV R6,#100
DJNZ R6,$
DJNZ R7,D1
RET
;-------------------------------------------------------------------------------------------------------------
----
KEYPROC:
MOV A,B ;从B寄存器中获取键值
JB ACC.2,CODE2 ;分析键的代码,某位被按下,则该位为1(因为在键盘程序中已取反)
JB ACC.3,CODE3
JB ACC.4,CODE4
JB ACC.5,CODE5
RET
;-------------------------------------------------------------------------------------------------------------
----
CODE2:ACALL CODE_START
      ACALL CODE_1
      MOV R5,#7
LOOP1:ACALL CODE_0
      DJNZ R5,LOOP1
      RET
;-------------------------------------------------------------------------------
CODE3:ACALL CODE_START
      ACALL CODE_1
      MOV R5,#2
LOOP2:ACALL CODE_0
      ACALL CODE_0
      ACALL CODE_1
      DJNZ R5,LOOP2
      ACALL CODE_0
      RET
;---------------------------------------------------------------------------------
CODE4:ACALL CODE_START
      ACALL CODE_1
      MOV R5,#2
LOOP3:ACALL CODE_0
      ACALL CODE_1
      ACALL CODE_0
      DJNZ R5,LOOP3
      ACALL CODE_0
      RET
;------------------------------------------------------------------------------------
CODE5:ACALL CODE_START
      ACALL CODE_1
      MOV R5,#2
LOOP4:ACALL CODE_0
      ACALL CODE_1
      ACALL CODE_1
      DJNZ R5, LOOP4
页: 1




H:\实践\fashechengxu.asm 12/13/07 23:07:32
      ACALL CODE_0
      RET
;------------------------------------------------------------------------------------
CODE_0:CLR P0.0
       MOV TMOD,#01H
       MOV TL0,#0CH
       MOV TH0,#0FEH
       SETB P0.0
       SETB TR0
AGAIN2:JNB TF0,AGAIN2
       CLR TR0
       CLR TF0
       CLR P0.0
       MOV TL0,#0CH
       MOV TH0,#0FEH
       SETB TR0
AGAIN3:JNB TF0,AGAIN3
       CLR TR0
       CLR TF0
       RET
;-----------------------------------------------------------------------------------------------------------
CODE_1:CLR P0.0
       MOV TMOD,#1
       MOV TL0,#0CH
       MOV TH0,#0FEH
       SETB P0.0
       SETB TR0
AGAIN4:JNB TF0,AGAIN4
       CLR TR0
       CLR TF0
       CLR P0.0
       MOV TL0,#24H
       MOV TH0,#0FAH
       SETB TR0
AGAIN5:JNB TF0,AGAIN5
       CLR TR0
       CLR TF0
       RET
;-------------------------------------------------------------------------------------------------------------
-CODE_START:CLR P0.0
           MOV TMOD,#01
           MOV TL0,#60H
           MOV TH0,#0F0H
           SETB P0.0
           SETB TR0
AGAIN:     JNB TF0, AGAIN
           CLR TR0
           CLR TF0
           CLR P0.0
           MOV TL0,#0CH
           MOV TH0,#0FEH
           SETB TR0
AGAIN1:    JNB TF0,AGAIN1
           CLR TR0
           CLR TF0
           RET
;-------------------------------------------------------------------------------------------------------------
---
   END





页: 2




⌨️ 快捷键说明

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