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

📄 ex0501.asm

📁 关于PIC16F877A单片机的一些源代码,比较丰富.初学者认真看看应该有收获的.
💻 ASM
字号:
;
;	EX0501.ASM 
;
	LIST P=16F877, R=DEC
	#INCLUDE <P16F877.INC>
	CBLOCK 0X20
	ENDC
;
;	define RAM
;
	CBLOCK
	 KYBUF,R0
	ENDC
;
	ORG 0
	NOP		; 
	BANKSEL TRISB
	MOVLW 0
	MOVWF TRISB
	MOVWF TRISD
	BANKSEL PORTB
	MOVLW H'FF'	; turn off LEDS
	MOVWF PORTB
;
	CLRF DATBF1	; clear data buffers
	CLRF DATBF2
;
;=======================
MAIN:
	CALL FOURLED
	CALL KB4X4	; read kyboard 
	BTFSC KYBUF,4	; Key detected?
	GOTO MAIN
	MOVF KYBUF,W
	MOVWF DATBF1
;
MAIN2:
	CALL KB4X4
	BTFSS KYBUF,4	; KEY RELEASED?
	GOTO MAIN2	; w=zero means key still pressed
;
	GOTO MAIN	; w = non-zero means key released !!!
;	
;	define port
;
PORT4X4	EQU PORTD		; keyboard is connected with portd
TRIS4X4	EQU TRISD		; set direction of port
;
;
KB4X4:
	MOVLW H'FF'		; 
	MOVWF PORT4X4		; turn off all pins
;
	BANKSEL TRIS4X4		; TRIS4X4 is in bank1
	MOVLW B'00001111'	; b0~3=input, b4~7=output
	MOVWF TRIS4X4		; 
	BANKSEL PORT4X4		; PORT4X4 is in bank0
;
	MOVLW B'11101111'	; select RAW1 (0~3)
	MOVWF PORT4X4
	MOVLW H'10'		; preset KYBUF to be 0X10
	BTFSS PORT4X4,0		; key 0 ?
	MOVLW 0
	BTFSS PORT4X4,1		; key 1 ?
	MOVLW 1
	BTFSS PORT4X4,2		; key 2 ?
	MOVLW 2
	BTFSS PORT4X4,3		; key 3 ?
	MOVLW 3
	MOVWF KYBUF		; store result
	BTFSS KYBUF,4
	GOTO KB4X4_1
;
	BSF PORT4X4,4		; turn off RAW1
	BCF PORT4X4,5		; turn on RAW2(4~7)
	CALL KB4X4_DLY
;
	BTFSS PORT4X4,0		; key 4 ?
	MOVLW 4
	BTFSS PORT4X4,1		; key 5 ?
	MOVLW 5
	BTFSS PORT4X4,2		; key 6 ?
	MOVLW 6
	BTFSS PORT4X4,3		; key 7 ?
	MOVLW 7
	MOVWF KYBUF		; store result
	BTFSS KYBUF,4
	GOTO KB4X4_1
;
	BSF PORT4X4,5		; turn off RAW2
	BCF PORT4X4,6		; turn on RAW3(8~B)
	CALL KB4X4_DLY
;
	BTFSS PORT4X4,0		; key 8 ?
	MOVLW 8
	BTFSS PORT4X4,1		; key 9 ?
	MOVLW 9
	BTFSS PORT4X4,2		; key A ?
	MOVLW H'A'
	BTFSS PORT4X4,3		; key B ?
	MOVLW H'B'
	MOVWF KYBUF		; store result
	BTFSS KYBUF,4
	GOTO KB4X4_1
;
	BSF PORT4X4,6		; turn off RAW3
	BCF PORT4X4,7		; turn on RAW4(C~F)
	CALL KB4X4_DLY
;
	BTFSS PORT4X4,0		; key C ?
	MOVLW H'C'
	BTFSS PORT4X4,1		; key D ?
	MOVLW H'D'
	BTFSS PORT4X4,2		; key E ?
	MOVLW H'E'
	BTFSS PORT4X4,3		; key F ?
	MOVLW H'F'
	MOVWF KYBUF		; store result
;
KB4X4_1:
	BSF PORT4X4,7
	RETURN
;
KB4X4_DLY:			; used for 16MHz CPU
	NOP
	NOP
	NOP
	RETURN
;---------------------------------------------------------------;
								;
	#INCLUDE <FOURLED.INC>					;
								;
;	externally defined pins (in main program)		;
								;
PORTSEG EQU PORTD	; segment port				;
TRISEG  EQU TRISD	; direction of segment port		;
PORTCA  EQU PORTB	; common anode port			;
TRICA   EQU TRISB	; direction of segment port		;
								;
	#INCLUDE <DLY2_5mS.INC>					;	
								;
;===============================================================;
;
;
;
;
	END

⌨️ 快捷键说明

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