View Single Post
Old 09-09-2012, 11:16 PM   #2
letanphuc
Nhập môn đệ tử
 
Tham gia ngày: Sep 2011
Bài gửi: 2
:
[/CODE]
;................................................. ...........
;..................DEFINE......................... ...........
LIST P=PIC18F2550
include <p18f2550.inc>
; __CONFIG....
CONFIG WDT=OFF ; disable watchdog timer
; CONFIG MCLRE = ON ; MCLEAR Pin on
; CONFIG DEBUG = OFF ; Enable Debug Mode
; CONFIG LVP = OFF ; Low-Voltage programming disabled (necessary for debugging)
; CONFIG FOSC = INTOSCIO_EC ;Internal oscillator, port function on RA6
; REGISTER
W_TEMP EQU 0x08
STATUS_TEMP EQU 0x09
BSR_TEMP EQU 0x0A
COUNT1 EQU 0x0B
COUNT2 EQU 0x0C
COUNT EQU 0x0D

;================================================= ===========

ORG 0x00
GOTO SETUP
ORG 0x08
GOTO INTERUPT
ORG 0x12

;================================================= ===========
INTERUPT:
BCF INTCON,TMR0IF ; clear flag
MOVWF W_TEMP ; W_TEMP is in virtual bank
MOVFF STATUS, STATUS_TEMP ; STATUS_TEMP located anywhere
MOVFF BSR, BSR_TEMP ; BSR_TMEP located anywhere

;......................MAIN INT..............................
INCFSZ COUNT,1
GOTO ENDINT
BTG PORTA,2
;................................................. ...........
ENDINT:
MOVFF BSR_TEMP, BSR ; Restore BSR
MOVF W_TEMP, W ; Restore WREG
MOVFF STATUS_TEMP, STATUS ; Restore STATUS

RETFIE

;================================================= ===========

SETUP
;........SET UP PORT IS INPUT OR OUTPUT..................
MOVLW 0x00
MOVWF TRISA
CLRF PORTA
;................SET UP TIMER0 ...........................
;MOVLW b'00000000' ;USE INTERNAL CLK AND DIV 2
;MOVWF T0CON
;MOVLW 0x00
;MOVWF TMR0H
;MOVWF TMR0L ;65000
CALL INIT_TIMER0
;................SET UP INT ..............................
;MOVLW b'10100000'
;MOVWF INTCON

;....START TIMER0
;BSF T0CON,7
CLRF COUNT



;================================================= ===========
LOOP
GOTO LOOP
;================================================= ===========




;================================================= ===========
;........................SUB FUNCTION..........................
;FUNCTION DELAY
DELAY
DELAY2
DECFSZ COUNT1,1
GOTO DELAY2
DECFSZ COUNT2,1
GOTO DELAY2
MOVLW 0F0h
MOVWF COUNT1
MOVWF COUNT2
RETURN


;================================================= ===========
;TURN LED ON/OFF
LEDON
; turn the led on
MOVLW 01h
MOVWF PORTA
RETURN
LEDOFF
; turn the led off
MOVLW 00h
MOVWF PORTA
RETURN
LEDTOG
; turn the led ON/OFF
MOVLW 01h
XORWF PORTA,0
MOVWF PORTA
RETURN
;================================================= ===========
INIT_TIMER0
BSF RCON,IPEN ;enable priority interrupts.
BCF INTCON2,TMR0IP
BSF INTCON,TMR0IF
BSF INTCON,TMR0IE

BSF INTCON,GIEH ;set the global interrupt enable bits
BSF INTCON,GIEL

CLRF T0CON
MOVLW 0x3c
MOVWF TMR0H
MOVLW 0xAF
MOVWF TMR0L
BSF T0CON,TMR0ON
RETURN
;================================================= ===========

END
[/CODE]
NHỜ MỌI NGƯỜI COI DÙM EM!
letanphuc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn