void T3init() { *EVBIMRA=*EVBIMRA|0X0080;//init *EVBIFRA=*EVBIFRA&0X0080; *T3CON = 0x1040; // 定时器3为连续增计数模式 *T3PER = 0x0820;//设置定时器3的周期寄存器,并设置CMPR4~CMPR6, *CMPR5 = 0x00C0; //*CMPR5 = 0x0010;//pwm9,10 1:1 *CMPR6 = 0x00C0; //*CMPR6 = 0x0010;//pwm11,12 1:1 *T3CNT=0X00;//计数器清0 *GPTCONB=0XF04A; //*T3CMPR=1000; *ACTRB=0x0000; *DBTCONB=0; //不使能死区控制 *COMCONB = 0x8200; }
void interrupt T3INT() { *EVBIFRA=*EVBIFRA&0X0080; flag=*EVBIFRA&0X0080; *T3CNT=0X00;//计数器清0 *EVBIFRA=*EVBIFRA&0X0080; asm (" clrc INTM"); return; }
.......... void do() { *CMPR5 = 0x00C0; while (flag!=0X0080){ } *T3CON=0x1000; *T3PER = 0x820; *ACTRB=0x0010;// 9di *T3CON=0x1040; *T3CNT=0X00;//计数器清0 *EVBIFRA=*EVBIFRA&0X0080; } |