求一个在单片机STC89C52上的P2.0引脚上输出方波的C语言程序,并且在 P1口的电压为0时方波的频率改变。在线
答案:1 悬赏:20 手机版
解决时间 2021-02-14 02:45
- 提问者网友:王者佥
- 2021-02-13 17:15
求一个在单片机STC89C52上的P2.0引脚上输出方波的C语言程序,并且在 P1口的电压为0时方波的频率改变。在线
最佳答案
- 五星知识达人网友:白昼之月
- 2021-02-13 17:48
好久没有写51的C了,我还不知道你给多少频率,周期就是那个maikuan的两倍,默认一开始是100ms,当p00外部输入为0就是40ms(晶振12m),总之看懂了自己改就行了,你给的条件太不平凡。。。所以程序真正的效果是有点不符合常理。
include
#define P2.0 P2^0
#define P0.0 P0^0
#define uint unsigned int
uint maikuan;
int main(void)
{ maikuan=50000; //设置晶振为12MHZ时,脉宽为50ms
TMOD=0x01; //设置定时器0为工作方式1
TH0=(65536-maikuan)/256; //装初值
TL0=(65536-maikuan)%256;
EA=1; //开启总中断
ET0=1; //开启定时器0中断
TR0=1; //启动定时器0
while(1)
{
if(P0.0=0){maikuan=20000};
};
}
void T0_time() interrupt 1
{
TH0=(65536-maikuan)/256; //重装初值
TL0=(65536-maikuan)%256;
P2.0=~P2.0; //方波
}追问没有定时器,就只有一个单片机~追答89c52内置定时器。。。不用定时器不准。。。。你难道说一点也不了解51吗?。。追问不好意思 初学者,我先试试~追答没事加油!追问程序有警告诶,可以麻烦你检查一下么~给个QQ~追答#include
#define uint unsigned int
sbit P20=P2^0;
sbit P00=P0^0;
uint maikuan;
int main(void)
{ maikuan=50000; //设置晶振为12MHZ时,脉宽为50ms
TMOD=0x01; //设置定时器0为工作方式1
TH0=(65536-maikuan)/256; //装初值
TL0=(65536-maikuan)%256;
EA=1; //开启总中断
ET0=1; //开启定时器0中断
TR0=1; //启动定时器0
while(1)
{
if(P00==0)
{maikuan=20000;}
};
}
void T0_time() interrupt 1
{
TH0=(65536-maikuan)/256; //重装初值
TL0=(65536-maikuan)%256;
P20=~P20; //方波
}
好久没写51的程序了,是有不少错。错误类型可能有很多,原因也有很多,学习和应用时要学会总结,学51的话给你推荐我们校友的郭天祥的《十天征服单片机》视频,最好买个他的板子,其实视频和书和板子这些都差不多,最重要的是自己要在应用中掌握,尤其是新手,不要肯理论不动手,也不要总依赖别人。
include
#define P2.0 P2^0
#define P0.0 P0^0
#define uint unsigned int
uint maikuan;
int main(void)
{ maikuan=50000; //设置晶振为12MHZ时,脉宽为50ms
TMOD=0x01; //设置定时器0为工作方式1
TH0=(65536-maikuan)/256; //装初值
TL0=(65536-maikuan)%256;
EA=1; //开启总中断
ET0=1; //开启定时器0中断
TR0=1; //启动定时器0
while(1)
{
if(P0.0=0){maikuan=20000};
};
}
void T0_time() interrupt 1
{
TH0=(65536-maikuan)/256; //重装初值
TL0=(65536-maikuan)%256;
P2.0=~P2.0; //方波
}追问没有定时器,就只有一个单片机~追答89c52内置定时器。。。不用定时器不准。。。。你难道说一点也不了解51吗?。。追问不好意思 初学者,我先试试~追答没事加油!追问程序有警告诶,可以麻烦你检查一下么~给个QQ~追答#include
#define uint unsigned int
sbit P20=P2^0;
sbit P00=P0^0;
uint maikuan;
int main(void)
{ maikuan=50000; //设置晶振为12MHZ时,脉宽为50ms
TMOD=0x01; //设置定时器0为工作方式1
TH0=(65536-maikuan)/256; //装初值
TL0=(65536-maikuan)%256;
EA=1; //开启总中断
ET0=1; //开启定时器0中断
TR0=1; //启动定时器0
while(1)
{
if(P00==0)
{maikuan=20000;}
};
}
void T0_time() interrupt 1
{
TH0=(65536-maikuan)/256; //重装初值
TL0=(65536-maikuan)%256;
P20=~P20; //方波
}
好久没写51的程序了,是有不少错。错误类型可能有很多,原因也有很多,学习和应用时要学会总结,学51的话给你推荐我们校友的郭天祥的《十天征服单片机》视频,最好买个他的板子,其实视频和书和板子这些都差不多,最重要的是自己要在应用中掌握,尤其是新手,不要肯理论不动手,也不要总依赖别人。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯