求教高手,PIC16F917,没加定时器时主函数里的按键和监测函数运行都是正常的,然后增加一个定时器做个蜂鸣器报警功能!结果主函数就运行了,后面再屏蔽掉定时器,主函数照样不运行!!不知道是怎么回事!求高手帮忙看看!
#include<pic.h>
#define uchar unsigned char
#define uint unsigned int
#define low RD0
#define lbt RD3
#define high RD2
#define flt RD4
#define spk RD5
#define mot RD6
#define ctr RD7
#define keyin RB0
const uint data[2]={64722,64436}; //蜂鸣器频率
uint mode=0,lednum;
uint count=0;
uint vba,isp,k,t,flagb,flagf,jcout,i,p,j,s;
__CONFIG(0x30F5);
void delay(uint x);
void init();
uint get_ad(uchar y);
void monitor();
void key_scan();
void sentchar(uchar data1);
void printcom(const uchar *dat);
void printdata(uint dat);
uint filter();
void speakf();
void speakb();
//void interrupt time1();
void main()
{
init();
while(1)
{
RD1=!RD1;
k++;
// s++;
if(k==1000)
{
k=0;
monitor();
}
if(s>=1000)
{
s=0;
RD4=!RD4;
TMR1ON=!TMR1ON;
}
key_scan();
}
}
void delay(uint x){--------}
void init() //初始化:4MHZ,AD, PWM,uart,定时器012
{
OSCCON=0x67;
TRISA=0x0f;
TRISB=0x01;
TRISC=0xc0;
TRISD=0;
PORTA=0;
PORTB=0;
PORTC=0;
PORTD=0xE1;
TXSTA=0x24;
RCSTA=0x90;
SPBRG=25;
RCIE=1;
ANSEL=0x28;
ADIE=1;
ADCON0=0x05;
ADCON1=0x9e;
OPTION=0X07;
TMR0=61;
T0IE=1;
INTCON=0xa0;
GIE=1;
PEIE=1;
PIE1=0X03;
T2CON=0X1C;
TMR2IE=0;
CCPR1L=0x5b; //C8
CCP1CON=0x0C;
TMR2=0;
PR2=0x7C;
T1CON=0x01;
TMR1L=(65536-200)%256;
TMR1H=(65536-200)/256;
delay(10);
T1CON=0X01;
PORTD=0x81;
}
uint get_ad(uchar y){----------}
void monitor(){----监测电池电压和总电流--}
void key_scan(){---一键开关机+功能切换----}
void sentchar(uchar data1){---串口----}
void printcom(const uchar *dat){ ---串口------}
void printdata(uint dat){---串口----}
void interrupt time1()
{
if(TMR1IE&&TMR1IF)
{
p=data[jcout];
TMR1IF=0;
TMR1L=p%256;
TMR1H=p/256;
spk=!spk;
s++;
// printdata(s);
}
}
uint filter(){----ADC平均值-----}
void speakf() {-------}
void speakb(){------}
|