急求一个用AT89C51的P1.0口产生40kHZ方波的程序
答案:3 悬赏:20 手机版
解决时间 2021-03-20 12:10
- 提问者网友:几叶到寒
- 2021-03-19 18:24
急求一个用AT89C51的P1.0口产生40kHZ方波的程序
最佳答案
- 五星知识达人网友:由着我着迷
- 2021-03-19 19:27
弄8个空指令NOP,,取反就行了,不过好像弄不准40K,追问嗯,用12M的晶振是不能40k,就产生38.5k的,我想要一个具体可实现的程序
全部回答
- 1楼网友:酒安江南
- 2021-03-19 20:27
如果是12 MHz,用定时器产生(8位自动载入方式)理论上是TH0=TL0=231(25uS),但端口去反也需要时间,我做超声波用是12T单片机产生方波处值处理TH0=TL0=243(38.5khz) TH0=TL0=244(41Khz) 40KHz不能产生, 如果用于超声波传感器(40Khz),应该没问题. 若用1T单片机,也只能更接近,不是40kHz
- 2楼网友:独行浪子会拥风
- 2021-03-19 19:47
#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit wave=P1^0;
void Delay_us(uint t);
void main()
{
while(1)
{
wave=0;
Delay_us(1);
wave=1;
Delay_us(1);
}
}
void Delay_us(uint t)
{
while(t--);
}
这个是12M单片机最快的,17Khz我用示波器量过,慢点的话可以改变延迟1是最快的,满意请采纳,谢谢。 中断可以产生你需要的频率。。
#include
#define uint unsigned int
#define uchar unsigned char
sbit wave=P1^0;
void Delay_us(uint t);
void main()
{
while(1)
{
wave=0;
Delay_us(1);
wave=1;
Delay_us(1);
}
}
void Delay_us(uint t)
{
while(t--);
}
这个是12M单片机最快的,17Khz我用示波器量过,慢点的话可以改变延迟1是最快的,满意请采纳,谢谢。 中断可以产生你需要的频率。。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯