PIC16F877A的问题
PIC16F877A的PIR1为什么C编译了在第一页面?c语言中是这样定义的:
#include <pic.h>
#include <pic168xa.h>
#include <stdio.h>
voidinter_init()
{PIE1|=0X01 ;
PEIE=0X01 ;
PIR1=0X00 ;
TMR1L=0Xd0 ;
TMR1H=0Xff ;
TMR1ON=0X01 ;//工作在定时器方式//
GIE=0X01 ; //打开总中断//
}
产生的代码是这样的:
inter_int BSF STATUS,0X5
BCF STATUS,0X6
BSF PIR1,0
BSF INTCON,0X6
BCF STATUS,0X5
CLRF PIR1
MOVLW 0XD0
MOVWF TMR1L
MOVLW OXFF
MOVWF TMR1H
BSF T1CON,0
BSF INTCON,0X7
RETURN 产生应该代码是这样的:
inter_int BSF STATUS,0X5
BCF STATUS,0X6
BSF 0X0C,0 这一条指令的0x0c 并不是PIR1 而PIE1的地址(0x8c),是执行PIE1|=0X01 ;
因为它现在在BANK1
BSF INTCON,0X6
BCF STATUS,0X5
CLRF 0X0C 这一条指令才是执行PIR1=0
MOVLW 0XD0
MOVWF TMR1L
MOVLW OXFF
MOVWF TMR1H
BSF T1CON,0
BSF INTCON,0X7
RETURN
页:
[1]