用AT89C51单片机构成一简单的方波发生器 急求

来源:百度知道 编辑:UC知道 时间:2024/05/31 02:11:05
用AT89C51单片机定时/计数器0的定时功能构成一简单的方波发生器,实现周期为400us的方波输出。若改变定时/计数器0的初值可得到不同周期的方波输出;

急求啊 做完就能回家了 高手们帮帮忙帮写一个完整程序 老弟在此谢过了
这位老哥啊 多谢您的回答 不过这是c语言程序吧 我们需要的是单片机程序 到时还得用Proteus仿真 用不了啊 不过不管怎么说您辛苦了!

给你个思路吧,写一个主程序和一个中断程序即可,主程序完成初始化就行,初始化完了等在那里,一直等到定时器中断,中断程序写一段现场保护代码,功能代码可用CPL PX.X即对方波输出引脚取反就行了。
关键是定时器初始值设置,需要计算一下,设置为FE6F,如果要求高精度,得考虑程序执行时间。

不知道你频率,和那个口出方波。假定是12MHz和P1.0了
#include <reg51.h>

sbit Out = P1^0;

void main()
{
unsigned char flag = 1;
IE = 0x82;
TMOD = 0x01;
while(1)
{
TH0 = 0xFF;
TL0 = 0x37;
TR0 = 1;
while(flag);
TH0 = 0xFF;
TL0 = 0x37;
TR0 = 1;
while(flag);
}

void timer0(void) interrupt 1
{
TR0 = 0;
Out = ~Out;
flag = 0;
}

你这个5分真的很小…………

你下个keil编译下不就完事了……现在做单片机的很少全程汇编了。

老兄你好搞笑哦,什么叫做“这是c语言程序吧,我们需要的是单片机程序”虽然汇编还有它发挥的余地,但c语言已经是单片机语言的趋势了。

KEIL也支持C的,你编绎一下这个C程序,产生的HEX文件就可以用PROTEUS进行仿真了。

对你来说这个问题只值5分????????

看来,这是个很小很小的问题,嘿嘿。