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

📄 pbp_interput2.asm

📁 使用PIC Basic Pro语言开发PIC单片机应用程序时使用Timer中断的应用实例
💻 ASM
字号:

; PicBasic Pro Compiler 2.46, (c) 1998, 2005 microEngineering Labs, Inc. All Rights Reserved.  
MPASMWIN_USED			EQU	1

	INCLUDE	"C:\PBP246\16F877A.INC"


; Define statements.
; C:\PBP246\16F877A.BAS    	00018	DEFINE  CODE_SIZE 8
#define		CODE_SIZE		 8

RAM_START       		EQU	00020h
RAM_END         		EQU	001EFh
RAM_BANKS       		EQU	00004h
BANK0_START     		EQU	00020h
BANK0_END       		EQU	0007Fh
BANK1_START     		EQU	000A0h
BANK1_END       		EQU	000EFh
BANK2_START     		EQU	00110h
BANK2_END       		EQU	0016Fh
BANK3_START     		EQU	00190h
BANK3_END       		EQU	001EFh
EEPROM_START    		EQU	02100h
EEPROM_END      		EQU	021FFh

; C:\PBP246\PBPPIC14.RAM   	00012	R0      VAR     WORD BANK0 SYSTEM       ' System Register
R0              		EQU	RAM_START + 000h
; C:\PBP246\PBPPIC14.RAM   	00013	R1      VAR     WORD BANK0 SYSTEM       ' System Register
R1              		EQU	RAM_START + 002h
; C:\PBP246\PBPPIC14.RAM   	00014	R2      VAR     WORD BANK0 SYSTEM       ' System Register
R2              		EQU	RAM_START + 004h
; C:\PBP246\PBPPIC14.RAM   	00015	R3      VAR     WORD BANK0 SYSTEM       ' System Register
R3              		EQU	RAM_START + 006h
; C:\PBP246\PBPPIC14.RAM   	00016	R4      VAR     WORD BANK0 SYSTEM       ' System Register
R4              		EQU	RAM_START + 008h
; C:\PBP246\PBPPIC14.RAM   	00017	R5      VAR     WORD BANK0 SYSTEM       ' System Register
R5              		EQU	RAM_START + 00Ah
; C:\PBP246\PBPPIC14.RAM   	00018	R6      VAR     WORD BANK0 SYSTEM       ' System Register
R6              		EQU	RAM_START + 00Ch
; C:\PBP246\PBPPIC14.RAM   	00019	R7      VAR     WORD BANK0 SYSTEM       ' System Register
R7              		EQU	RAM_START + 00Eh
; C:\PBP246\PBPPIC14.RAM   	00020	R8      VAR     WORD BANK0 SYSTEM       ' System Register
R8              		EQU	RAM_START + 010h
; C:\PBP246\PBPPIC14.RAM   	00026	FLAGS   VAR     BYTE BANK0 SYSTEM       ' Static flags
FLAGS           		EQU	RAM_START + 012h
; C:\PBP246\PBPPIC14.RAM   	00025	GOP     VAR     BYTE BANK0 SYSTEM       ' Gen Op Parameter
GOP             		EQU	RAM_START + 013h
; C:\PBP246\PBPPIC14.RAM   	00022	RM1     VAR     BYTE BANK0 SYSTEM       ' Pin 1 Mask
RM1             		EQU	RAM_START + 014h
; C:\PBP246\PBPPIC14.RAM   	00024	RM2     VAR     BYTE BANK0 SYSTEM       ' Pin 2 Mask
RM2             		EQU	RAM_START + 015h
; C:\PBP246\PBPPIC14.RAM   	00021	RR1     VAR     BYTE BANK0 SYSTEM       ' Pin 1 Register
RR1             		EQU	RAM_START + 016h
; C:\PBP246\PBPPIC14.RAM   	00023	RR2     VAR     BYTE BANK0 SYSTEM       ' Pin 2 Register
RR2             		EQU	RAM_START + 017h
; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00001	    loops   VAR WORD 
_loops           		EQU	RAM_START + 018h
; C:\PBP246\16F877A.BAS    	00022	PORTL   VAR     PORTB
_PORTL           		EQU	 PORTB
; C:\PBP246\16F877A.BAS    	00023	PORTH   VAR     PORTC
_PORTH           		EQU	 PORTC
; C:\PBP246\16F877A.BAS    	00024	TRISL   VAR     TRISB
_TRISL           		EQU	 TRISB
; C:\PBP246\16F877A.BAS    	00025	TRISH   VAR     TRISC
_TRISH           		EQU	 TRISC
#define _PORTC_0         	 PORTC, 000h
#define _PORTC_3         	 PORTC, 003h
#define _PORTC_2         	 PORTC, 002h
	INCLUDE	"PBP_INTERPUT2.MAC"
	INCLUDE	"C:\PBP246\PBPPIC14.LIB"


; C:\PBP246\16F877A.BAS    	00012	BANK0   $0020, $007F
; C:\PBP246\16F877A.BAS    	00013	BANK1   $00A0, $00EF
; C:\PBP246\16F877A.BAS    	00014	BANK2   $0110, $016F
; C:\PBP246\16F877A.BAS    	00015	BANK3   $0190, $01EF
; C:\PBP246\16F877A.BAS    	00016	EEPROM  $2100, $21FF
; C:\PBP246\16F877A.BAS    	00017	LIBRARY "PBPPIC14"
; C:\PBP246\16F877A.BAS    	00018	DEFINE  CODE_SIZE 8

; C:\PBP246\16F877A.BAS    	00020	        include "PIC14EXT.BAS"

; C:\PBP246\16F877A.BAS    	00027	        include "PBPPIC14.RAM"

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00002	    loops   =   0    
	MOVE?CW	000h, _loops

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00004		TRISC = 255
	MOVE?CB	0FFh, TRISC

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00005		PortC = 0
	MOVE?CB	000h, PORTC

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00007	    INTCON = 0
	MOVE?CB	000h, INTCON

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00008	    PIR1 = $00        ' clear interupt flags
	MOVE?CB	000h, PIR1

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00010	    PortC.0 = 1
	MOVE?CT	001h, _PORTC_0

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00012	    TMR1H = $3C     ' load timer1 with $3CAF
	MOVE?CB	03Ch, TMR1H

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00013	    TMR1L = $AF
	MOVE?CB	0AFh, TMR1L

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00014	    T1CON = %00000001 ' 开启TMR1, 预分频
	MOVE?CB	001h, T1CON

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00015		INTCON = $C0    ' 开启全局中断
	MOVE?CB	0C0h, INTCON

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00016	    PIE1 = $01      ' 开启TMR1中断 
	MOVE?CB	001h, PIE1

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00018	    on interrupt goto ChangeDisplay
	ONINT?LL	_ChangeDisplay, L00001

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00020	loop: 

	LABEL?L	_loop	

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00021	    pause 1
	ICALL?L	L00001
	PAUSE?C	001h

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00022	    goto loop
	ICALL?L	L00001
	GOTO?L	_loop

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00024	    DISABLE
	DISABLE?	

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00025		ChangeDisplay:

	LABEL?L	_ChangeDisplay	

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00026			loops = loops + 1
	ADD?WCW	_loops, 001h, _loops

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00027			Toggle PortC.3
	TOGGLE?T	_PORTC_3

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00028			If loops = 20 Then 
	CMPNE?WCL	_loops, 014h, L00002

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00029				loops = 0
	MOVE?CW	000h, _loops

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00030				Toggle PortC.2
	TOGGLE?T	_PORTC_2

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00031			EndIf
	LABEL?L	L00002	

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00033	    	TMR1H = $3C       ' load timer1 with $3CAF
	MOVE?CB	03Ch, TMR1H

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00034		    TMR1L = $AF
	MOVE?CB	0AFh, TMR1L

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00035	    	PIR1 = $00        ' clear interrupt flags
	MOVE?CB	000h, PIR1

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00036	    RESUME
	RESUME?	

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00037	    ENABLE
	ENABLE?	

; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS	00039	End
	ICALL?L	L00001
	END?	

	END

⌨️ 快捷键说明

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