怎么用51写50HZ脉宽2ms的方波
求大神讲解怎么计算,晶振11.0952M 周期 20ms,高电平2ms,低电平18ms循环下去。就是你要的了 PWM 就得了 定时器定时,最简单。 楼主不是已经要入门比51高大上很多的ARM了吗? 怎么连51产生一个方波都不会了? 理论上实现不了 几个标志位就搞定了~~~不难 xiakang 发表于 2014-4-2 08:49理论上实现不了
为什么?? zhanyanqiang 发表于 2014-4-2 08:58
为什么??
理论上实现不了 unsigned char dat[]={1,0,0,0,0,0,0,0,0,0};
void time1() interrupt 2
{
TL1 = 0xCD;
TH1 = 0xF8;
LED1=dat;
count0+=1;
if(count0==10)
count0=0;
}
C渣别喷我 定时器来做就好了 定时器就能完成吧 换12m精振吧,11.0592没可能 不用定时器也能做 当然了,不用定时器的话,cpu软件延时就不能做别的了(不要说软件延时不如定时器准)。一切的前提是12m精振 不用定时器也能做 当然了,不用定时器的话,cpu软件延时就不能做别的了(不要说软件延时不如定时器准)。一切的前提是12m精振 PC1=1;
delay 2ms;
PC1=0;
delay 18ms;
Honey_comb 发表于 2014-4-2 09:16
C渣别喷我
虽然没细读你的软件,但我知道精振11.0592,所以这是不可能的任务。另外给你个建议,高精延时用双定时器嵌套 fsclub 发表于 2014-4-2 09:29
PC1=1;
delay 2ms;
PC1=0;
您老是如何用11.0592delay出2ms的
勤劳的小码农 发表于 2014-4-2 09:33
虽然没细读你的软件,但我知道精振11.0592,所以这是不可能的任务。另外给你个建议,高精延时用双定时器 ...
谢谢指导,11.0592当然有误差的0.01%,不过要求不高的话还是可以的 Honey_comb 发表于 2014-4-2 09:36
谢谢指导,11.0592当然有误差的0.01%,不过要求不高的话还是可以的
你这么直接做有一个问题,中断到时cpu可能在执行多周期指令,中断程序根本无法执行。双定时器嵌套。 勤劳的小码农 发表于 2014-4-2 09:40
你这么直接做有一个问题,中断到时cpu可能在执行多周期指令,中断程序根本无法执行。双定时器嵌套。 ...
是的确实有这个问题,谢大神 Honey_comb 发表于 2014-4-2 09:16
C渣别喷我
好吧。。。 Honey_comb 发表于 2014-4-2 09:41
是的确实有这个问题,谢大神
我不是大神,我只是个高中生,我是雷锋。 勤劳的小码农 发表于 2014-4-2 09:34
您老是如何用11.0592delay出2ms的
delay_us(1000);
delay_us(1000); 用定时器中断
页:
[1]