深圳市英锐恩科技有限公司:台湾麦肯单片机(Micon MDT单片机)亚太地区A级代理商
键控LED的实验
;本实验的目的是让大家熟悉IO口的输入操作,本程序的作用是用按键控制LED
;按S2时只有LED8发光,按S3时只有LED7发光,按S4时只有LED6发光,按S5时只有LED5发光
;烧写时应注意:配置位已经在程序中写明,加载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