?? keycled.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 + -