大家帮我看看,为什么我这个程序进不了中断呢?
LIST P=16F873A
INCLUDE <P16F873A.INC>
__CONFIG 3FBBH
ORG 00H
NOP
RESET_V
GOTO START
ORG 0x004
BCF STATUS,5 ;区0
T1_OVER
MOVF PORTC,W ;将C口状态读入W
XORLW B'11000000' ;将最高两位取反
MOVWF PORTC ;再送回C口
BCF PIR1,TMR1IF ;清除TMR1中断标志位
MOVLW 80H ;为TMR1重装初值
MOVWF TMR1H ;以便产生1S间隔的溢出
RETFIE ;中断返回
START
CLRF STATUS ;初始化状态寄存器,选区0
BCF T1CON,TMR1ON ;关闭TMR1
MOVLW 80H ;TMR1H;TMR1L=80H
MOVWF TMR1H ;溢出时间设为1S
CLRF TMR1L ;频率为32.768KHZ,TMR1l需清零
CLRF INTCON ;清除所有中断位及使能位
CLRF PIR1
CLRF PIR2
BSF STATUS,5 ;区1
CLRF PIE1
CLRF PIE2
CLRF TRISC ;设C口输出
BSF TRISC,0 ;设C0口输入
BSF PIE1,TMR1IE ;使能TMR1中断
BCF STATUS,5 ;区0
BSF INTCON,PEIE ;开放外设中断
BSF INTCON,GIE ;开放全局中断
MOVLW 80H ;点亮LED7
MOVWF PORTC
MOVLW 0EH ;设置分频比1:1,使能振荡器
MOVWF T1CON ;外部时钟源,异步方式
BSF T1CON,TMR1ON ;开启TMR1
LOOP
MOVF PORTC,W ;读C口状态到W
XORLW B'00110000' ;取反BIT5-4
MOVWF PORTC ;送C口
CALL DELAY ;延时
GOTO LOOP ;循环,等待TMR1中断
DELAY ;当系统时钟为4MHZ时,延时为521ms
MOVLW 0FFH
MOVWF 70H
LP0
MOVLW 0FFH
MOVWF 71H
LP1
NOP
NOP
NOP
NOP
NOP
DECFSZ 71H,1
GOTO LP1
DECFSZ 70H,1
GOTO LP0
RETURN
END
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>