英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流
标题:
PIC16F877A的问题
[打印本页]
作者:
winnie
时间:
2009-4-25 16:14
标题:
PIC16F877A的问题
PIC16F877A的PIR1为什么C编译了在第一页面?
c语言中是这样定义的:
#include <pic.h>
#include <pic168xa.h>
#include <stdio.h>
void inter_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
作者:
winnie
时间:
2009-4-25 16:14
产生应该代码是这样的:
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
欢迎光临 英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 (http://enroobbs.com/)
Powered by Discuz! X3.2