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

📄 keycled.asm

📁 按键学习
💻 ASM
字号:
;ST套件键控LED实验程序
;本实验的目的是让大家熟悉IO口的输入操作,本程序的作用是用按键控制LED 
;按S2时只有LED8发光,按S3时只有LED7发光,按S4时只有LED6发光,按S5时只有LED5发光
;PIC单片机学习网-----http://www.pic16.com
;烧写时应注意:配置位已经在程序中写明,加载HEX文件时会自动加载,烧写时不用再手动设置配置位。
;实验时请注意套件跳线选择
;****************************************************************
  LIST P=16F84A,R=DEC          ;定义器件为16F84,默认数制为十进制
;----------------------------------------------------------------
  __CONFIG B'11111111110001';_CP_OFF&_WDT_OFF&_PWRITE_ON&_XT_OSC 
                                              ;没有代码保护
                                              ;看门狗关闭
                                              ;上电廷时器开启
                                              ;振荡器模式为XT
;----------------------------------------------------------------
STATUS EQU 03H               ;寄存器单元定义
RP0 EQU 5
;----------------------
PORTA EQU 05H
PORTB EQU 06H

TRISA EQU 5H
TRISB EQU 6H
;-----------------------    ;变量单元定义
DATA1 EQU 20H
;----------------------RA
KEY1 EQU 3
KEY2 EQU 4
;----------------------RB
KEY3 EQU 0
KEY4 EQU 1
;--------------------
   ORG 0000H
MAIN
   CLRF PORTA               ;初始IO口
   CLRF PORTB

   BSF STATUS,RP0           ;设置数据寄存器体1
   MOVLW 00011000B          ;定义RA。3,RA。4为输入其它为输出
   MOVWF TRISA
   MOVLW 00000011B          ;定义RB。0,RB。1为输入其它为输出
   MOVWF TRISB 
   BCF STATUS,RP0           ;恢复数据寄存器体0

LOOP
   BTFSS PORTA,KEY1         ;扫描按键,有按键被按下转到键值处理
   GOTO SET_KEY1
   BTFSS PORTA,KEY2
   GOTO SET_KEY2
   BTFSS PORTB,KEY3
   GOTO SET_KEY3
   BTFSS PORTB,KEY4
   GOTO SET_KEY4
   GOTO LOOP                ;反复扫描
;---------------------------------
SET_KEY1
   BTFSC PORTA,KEY1         ;是干扰退出
   GOTO LOOP
   MOVLW 255
   MOVWF DATA1
SET_KEY1A
   BTFSC PORTA,KEY1         ;去抖动
   GOTO LOOP
   DECFSZ DATA1,1
   GOTO SET_KEY1A
   MOVLW 03H
   ANDWF PORTB,1           ;熄灭所有LED
   MOVLW 80H
   IORWF PORTB,1           ;点亮LED8
SET_KEY1B
   BTFSS PORTA,KEY1        ;等待按键放开
   GOTO SET_KEY1B
   GOTO LOOP               
;---------------------------------
SET_KEY2
   BTFSC PORTA,KEY2
   GOTO LOOP
   MOVLW 255
   MOVWF DATA1
SET_KEY2A
   BTFSC PORTA,KEY2        
   GOTO LOOP
   DECFSZ DATA1,1
   GOTO SET_KEY2A
   MOVLW 03H
   ANDWF PORTB,1
   MOVLW 40H
   IORWF PORTB,1          ;按S3点亮LED7     
SET_KEY2B
   BTFSS PORTA,KEY2
   GOTO SET_KEY2B
   GOTO LOOP 
;---------------------------------
SET_KEY3
   BTFSC PORTB,KEY3
   GOTO LOOP
   MOVLW 255
   MOVWF DATA1
SET_KEY3A
   BTFSC PORTB,KEY3
   GOTO LOOP
   DECFSZ DATA1,1
   GOTO SET_KEY3A
   MOVLW 03H
   ANDWF PORTB,1
   MOVLW 20H
   IORWF PORTB,1          ;按S4点亮LED6
SET_KEY3B
   BTFSS PORTB,KEY3     
   GOTO SET_KEY3B
   GOTO LOOP 
;---------------------------------
SET_KEY4
   BTFSC PORTB,KEY4
   GOTO LOOP
   MOVLW 255
   MOVWF DATA1
SET_KEY4A
   BTFSC PORTB,KEY4
   GOTO LOOP
   DECFSZ DATA1,1
   GOTO SET_KEY4A
   MOVLW 03H
   ANDWF PORTB,1
   MOVLW 10H
   IORWF PORTB,1
SET_KEY4B
   BTFSS PORTB,KEY4        ;按S5点亮LED5
   GOTO SET_KEY4B
   GOTO LOOP 
;---------------------------------
   END

 

⌨️ 快捷键说明

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