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

📄 kglcj.asm

📁 PIC16F874单片机程序,可以用于对8路开关量进行采集
💻 ASM
字号:
;***********************************************************
	LIST	P=16F874
	INCLUDE	"P16F874.inc"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;自定义
JSSJ		EQU	20H
W_TEMP          EQU     21H
STATUS_TEMP     EQU     22H
PCLATH_TEMP     EQU     23H
TEMP0		EQU	24H
COUNT2		EQU	25H
COUNT1		EQU	26H
ADD0		EQU	27H
COUNT		EQU	28H
DATAR_1		EQU	30H
DATAR_2		EQU	31H
SBID		EQU	32H
KGL1		EQU	43H
KGL2		EQU	44H
DATAE_1	        EQU	45H
DATAE_2		EQU	46H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;中断保护
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH	MACRO
	MOVWF	W_TEMP   
	SWAPF	STATUS,W
	CLRF	STATUS
	MOVWF	STATUS_TEMP 
	MOVF	PCLATH,W
	MOVWF	PCLATH_TEMP
	CLRF	PCLATH
	ENDM
POP	MACRO
	CLRF	STATUS
	MOVF	PCLATH_TEMP,W
	MOVWF	PCLATH
	SWAPF	STATUS_TEMP,W
	MOVWF	STATUS
	SWAPF	W_TEMP,F                          
	SWAPF	W_TEMP,W
	ENDM
	ORG	00H

	GOTO	MAIN
	ORG	04H
	GOTO	INTERUPT
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;清寄存器
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;       
MAIN
         BCF	STATUS,RP0	;BANK0
	 MOVLW	20H		;CLEAR 20H-7FH
	 MOVWF	FSR
RAMCLEAR1
	 CLRF	INDF
	 INCF	FSR,F
	 MOVF	FSR,W
	 SUBLW	50H
	 BTFSS	STATUS,Z	;ADD=80H?
	 GOTO	RAMCLEAR1
INITIA	
	BCF	INTCON,GIE
	BSF	STATUS,RP0
	MOVLW	0XFF
	MOVWF	TRISA
	MOVWF	TRISD
	MOVLW	0X80
	MOVWF	TRISC
	MOVLW	0X00
	MOVWF	TRISB
	MOVLW	0X04
	MOVWF	TRISE
	BCF	STATUS,RP0
	MOVLW	0XFF
	MOVWF	TMR1L
	MOVLW	0XB7
	MOVWF	TMR1H
	MOVLW	0X00
	MOVWF	T1CON
	BSF	STATUS,RP0
	MOVLW	D'3'
	MOVWF	SPBRG
	MOVLW	B'10100100'
	MOVWF	TXSTA
	BCF	PIE1,TXIE
	BSF	PIE1,RCIE
	BCF	STATUS,RP0
	BSF	RCSTA,SPEN
	BCF	RCSTA,RX9
	BSF	RCSTA,CREN
	BSF	STATUS,RP0
	MOVLW	0X80
	MOVWF	ADCON1
	BSF	PIE1,0
	BCF	STATUS,RP0
	BSF	INTCON,GIE
	BSF	INTCON,PEIE
	BSF	T1CON,0
	BSF	PORTC,1
	MOVLW	0X32
	MOVWF	COUNT2
	MOVLW	0X01
	MOVWF	SBID
	MOVLW	0X55
	MOVWF	DATAR_1
	MOVWF	DATAR_2
	MOVLW	0XAA
	MOVWF	DATAE_1
	MOVWF	DATAE_2
	BSF	TEMP0,4
C1	BTFSS	TEMP0,1
	GOTO	C2
	BTFSS	TEMP0,4
	GOTO	C2
	CALL	C_FS
C2	BSF	PORTC,5
	NOP
	NOP
	MOVF	PORTD,W
	MOVWF	KGL1
	BCF	PORTC,5
	NOP
	NOP
	MOVF	PORTD,W
	MOVWF	KGL2
	MOVLW	0X33
	MOVWF	FSR
	MOVLW	0X01
	MOVWF	ADD0
	CALL	CJ_AD
	MOVLW	0X09
	MOVWF	ADD0
	CALL	CJ_AD
	MOVLW	0X11
	MOVWF	ADD0
	CALL	CJ_AD
	MOVLW	0X19
	MOVWF	ADD0
	CALL	CJ_AD
	MOVLW	0X21
	MOVWF	ADD0
	CALL	CJ_AD
	MOVLW	0X29
	MOVWF	ADD0
	CALL	CJ_AD
	MOVLW	0X31
	MOVWF	ADD0
	CALL	CJ_AD
	MOVLW	0X39
	MOVWF	ADD0
	CALL	CJ_AD
	GOTO	C1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INTERUPT
	PUSH
	BCF	STATUS,RP0
	BTFSS	PIR1,TMR1IF
	GOTO	A0
	BCF	PIR1,TMR1IF
	MOVLW	0XFF
	MOVWF	TMR1L
	MOVLW	0XB7
	MOVWF	TMR1H
	DECFSZ	COUNT2,F
	GOTO	A0
	MOVLW	0X32
	MOVWF	COUNT2
	BTFSS	PORTC,1
	GOTO	A1
	BCF	PORTC,1
	GOTO	A0
A1	BSF	PORTC,1
A0	BTFSS	PIR1,RCIF
	GOTO	SSS
	BTFSS	RCSTA,OERR
	GOTO	DSJ
	BCF	RCSTA,CREN
	BSF	RCSTA,CREN
DSJ	MOVF	RCREG,W
	MOVWF	JSSJ
	SUBLW	0FFH	
	BTFSS	STATUS,Z
	GOTO	SST
	BTFSS	TEMP0,2
	GOTO	SS2
	BSF	TEMP0,3
	GOTO	SS2
SST	BTFSS	TEMP0,3
	GOTO	SS1
	MOVF	JSSJ,W
	SUBLW	01H
	BTFSS	STATUS,Z
	GOTO	SS1
	BSF	TEMP0,1
SS1	BCF	TEMP0,2
	BCF	TEMP0,3
	GOTO	SSS	
SS2	BSF	TEMP0,2
	GOTO	SSS
SSS	POP
	RETFIE

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
C_FS	BCF	TEMP0,4
	BCF	TEMP0,1	
	BCF     STATUS,RP0
	MOVLW	0X17
	MOVWF	COUNT
D0	MOVLW	0X30
	MOVWF	FSR
D2	BTFSS	PIR1,4
	GOTO	D2
D1	MOVF	INDF,W
	MOVWF	TXREG
	INCF	FSR,F
	DECFSZ	COUNT,F
	GOTO	D2
	BSF	TEMP0,4
	RETURN	
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CJ_AD
	MOVF	ADD0,W
	MOVWF	ADCON0
D3	BTFSC	ADCON0,2
	GOTO	D3
	BCF	PIR1,ADIF
	MOVF	ADRESH,W
	MOVWF	INDF
	INCF	FSR,F
	BSF	STATUS,RP0
	MOVF	ADRESL,W
	BCF	STATUS,RP0
	MOVWF	INDF
	INCF	FSR,F
	RETURN		
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
      END

⌨️ 快捷键说明

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