;ST套件键控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