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

📄 ex1101.asm

📁 关于PIC16F877A单片机的一些源代码,比较丰富.初学者认真看看应该有收获的.
💻 ASM
字号:
;
;	LCD + REAL TIME CLOCK
;
	LIST P=16F877, R=DEC
	#INCLUDE P16F877.INC
	CBLOCK 0X20
	ENDC
;
;	define RAM
;
	CBLOCK
	 SECS,MINS,HRS
	 W_BAK, STATUS_BAK		; back up RAM for w register
	 BCDBFH, BCDBFL			; buffers for HEX to BCD converter
	ENDC
;

;.......................................................................
;
	ORG 0
	NOP
	GOTO MAIN		; reset vector
;
;
	ORG 4			; interrupt vector
;
	MOVWF W_BAK		; save w register
	SWAPF STATUS,W
	CLRF STATUS
	MOVWF STATUS_BAK	; save status register
;
	call	L2homeLCD	; prepair for next writing
;
	MOVLW H'80' 		; 
	ADDWF TMR1H,F		; restore timer1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	; TMR1L need not be restored			;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
	INCF SECS,F
	MOVLW .60
	SUBWF SECS,W
	SKPC
	GOTO INTRPT_1
;
	MOVWF SECS		; 60 sec = 1 min
	INCF MINS,F
	MOVLW .60
	SUBWF MINS,W
	SKPC
	GOTO INTRPT_1
;
	MOVWF MINS		; 60 min = 1 hour
	INCF HRS,F
	MOVLW .24
	SUBWF HRS,W
	SKPNC
	MOVWF HRS		; 24 hr = 00 hr
INTRPT_1:
	MOVLW 3
	CALL movcurLCD		; move cursor right 3 positions
;
	MOVF HRS,W		; put hour
	CALL	HX2BCD
	MOVF	BCDBFL,W
	CALL putHexLCD
	MOVLW ":"
	CALL putcLCD
;
	MOVF MINS,W		; put minute
	CALL	HX2BCD
	MOVF	BCDBFL,W
	CALL putHexLCD
	MOVLW ":"
	CALL putcLCD
;
	MOVF SECS,W		; put sconds
	CALL	HX2BCD
	MOVF	BCDBFL,W
	CALL putHexLCD
;
	BANKSEL PIR1
	BCF PIR1,TMR1IF		; clear timer1 interrupt flag
;
	BANKSEL STATUS_BAK
	SWAPF STATUS_BAK,W	
	MOVWF STATUS		; restore STATUS
	SWAPF W_BAK,F
	SWAPF W_BAK,W		; restore w register without affecting status
	RETFIE
;
;.....................................................
;
MAIN:
	call	InitLCD
	call	clrLCD
;
;************************************************
;*   - Initialize Timer1 with 8000h(32768)      *
;*   - Configure Timer1                         *
;*       - Prescale 1:1                         *
;*       - Enable Oscillator                    *
;*       - DO NOT SYNCHRONIZE                   *
;*       - External Clock Source                *
;*       - Enable Timer1                        *
;*   - Clear Timer1 Overflow Interrupt Flag     *
;*   - Enable Timer1 Overflow Interrupt         *
;*   - Enable Peripheral Interrupts             *
;*   - Enable Global Interrupts                 *
;************************************************
	BANKSEL TMR1H
	MOVLW H'80'	
	MOVWF TMR1H	
	CLRF TMR1L		; 8000H=32768
	MOVLW B'00001111'
	MOVWF T1CON
;
	BANKSEL PIR1
	BCF	PIR1,TMR1IF
;
	BANKSEL PIE1
	BSF	PIE1,TMR1IE
;
	BANKSEL SECS
	BSF	INTCON,PEIE
	BSF	INTCON,GIE
;
	CLRF SECS
	CLRF MINS
	CLRF HRS
;
MAIN1:
	SLEEP
	GOTO MAIN1
;
;...............................................................
;
;
;---------------------------------------------------------------;
								;
	#INCLUDE <LCD.INC>					;
								;
; Defines for I/O ports that provide LCD data & control		;
								;
LCD_DATA	equ	PORTB					;
LCD_CNTL	equ	PORTB					;
								;
RS	equ	5	; RS=PORTB,5				;
E	equ	4						;
								;
;===============================================================;
;---------------------------------------------------------------;
								;
	#INCLUDE <HX2BCD.INC>					;
								;
;===============================================================;
;
;
	END

⌨️ 快捷键说明

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