|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
老师要求,1秒内按一次输出1KHz,按两次输出2KHz,按三次输出占空比25%的500HZ方波。
仿真无效果,怎么按都不会变。
- #include"reg51.h"
- sbit TOUT=P2^0;
- unsigned char cot1,cot2,k;
- void main()
- {
- TMOD=0x11;
- cot1=0;
- cot2=0;
- TOUT=0;
- k=0;
- TH0=(65536-10000)/256; //百分之1秒
- TL0=(65536-10000)%256;
- EA=1;
- ET1=1;
- ET0=1;
- TR0=1;
- IT1=1;
- EX1=1;
- while(1){};
- }
- void Timer0(void) interrupt 1
- {
- if(cot1>=100)
- {
- if(cot2==1)
- {
- TH1=(65536-500)/256;
- TL1=(65536-500)%256;
- TR1=1;
- }
- else if(cot2==2)
- {
- TH1=(65536-1000)/256;
- TL1=(65536-1000)%256;
- TR1=1;
- }
- else if(cot2==3)
- {
- TH1=(65535-235)/256;
- TL1=(65535-235)%256;
- TR1=1;
- k=1;
- }
- else TOUT=0;
- }
- else
- {
- cot1=0;
- cot2=0;
- }
- cot1++;
- }
- void anjian(void) interrupt 2
- {
- cot2++;
- }
- void Timer1(void) interrupt 3
- {
- if(k>=1)
- {
- k++;
- if(k>=2) TOUT=0;
- else TOUT=1;
- if(k==4) k=0;
- }
- else TOUT=~TOUT;
- }
复制代码 |
|