屏蔽void timer0_init();函数,串口可以正常收发,但是舵机初始化就失败了,查了半天也查不出原因,感觉是定时器和中断这块的问题,希望大神点拨
- #include <stc12c5a60s2.h>
- #define uchar unsigned char
- sbit pwm=P1^7;
- uchar count,jd,flag,a;
- void timer0_init()
- {
- TMOD=0x01;
- IE=0x82;
- TH0=0xfe;
- TL0=0x33;
- TR0=1;
- }
- void lanya()
- {
- TMOD=0x20;
- TR1=1;
- TH1=0xfd;
- TL1=0xfd;
- REN=1;
- SM0=0;
- SM1=1;
- EA=1;
- ES=1;
-
- }
- void timer0() interrupt 1
- {
- TH0=0xfe;
- TL0=0x33;
- if(count<jd)
- pwm=1;
- else
- pwm=0;
- count=(count+1);
- // if(count==40)
- // TR0=0;
- count=count%40;
- }
- void exter() interrupt 4
- {
- RI=0;
- a=SBUF;
- flag=1;
- }
- void main()
- {
- jd=1;
- count=0;
- timer0_init();
- lanya();
-
- while(1)
- {
- if(flag==1)
- {
- EA=0;
- ES=0;
- flag=0;
- SBUF=a;
- while(!TI);
- TI=0;
- ES=1;
- }
- EA=1;
- switch(SBUF)
- {
- case '0':
- jd++;
- count=0;
- if(jd==6)
- jd=5;
- break;
- case '1':
- jd--;
- count=0;
- if(jd==0)
- jd=1;
- break;
- }
- }
- }
复制代码
此帖出自
小平头技术问答
感谢,已经改好了,加了一行IP中断优先级寄存器,设置了串口中断优先级比T0高
一周热门 更多>