永发信息网

单片机PWM调光的实质不是调节占空比么,我分别调节两个程序一个是周期内9/10T亮、另一个是周期内1/10T亮

答案:3  悬赏:0  手机版
解决时间 2021-02-06 00:36
为什么点亮的灯一样亮
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit led=P1^0;
//1KHz时T=0.001S=1000uS,T/2=0.0005S=0.5mS=500uS
uchar tt;
void main()
{
TMOD=0x01;//设置定时器0为工作方式1
TH0=(65536-100)/256;//定时100uS
TL0=(65536-100)%256;
EA=1;//开总中断
ET0=1;//开定时器0中断
TR0=1;//启动定时器0
while(1)
{
if(tt==9)//1/10T的时间灭
{
tt=0;
led=1;
}
else//9/10T的时间亮
led=0;
}
}
void exter0() interrupt 1
{
TH0=(65536-100)/256;
TL0=(65536-100)%256;
tt++;
}
最佳答案
很显然是有逻辑上的错误,你原来的程序在tt为9的时候,只有一瞬间的时间,也就是说在中断的时候,tt一旦为9,主程序中立刻就将它变成了0,所以你的led为1的时间是相当短的,几乎是全部是0的情况,所以,不管你怎么调,都是和led为0的结果是一样的。
我稍微给你改下,结果如下

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit led=P1^0;
//1KHz时T=0.001S=1000uS,T/2=0.0005S=0.5mS=500uS
uchar tt;
void main()
{
TMOD=0x01;//设置定时器0为工作方式1
TH0=(65536-100)/256;//定时100uS
TL0=(65536-100)%256;
EA=1;//开总中断
ET0=1;//开定时器0中断
TR0=1;//启动定时器0
while(1)
{
if(tt>=9)//1/10T的时间灭 。
{
led=1;
}
else//9/10T的时间亮
led=0;
}
}
void exter0() interrupt 1
{
TH0=(65536-100)/256;
TL0=(65536-100)%256;
tt++;
if(tt>=10)
// 这里为了保证程序的抗干扰,不能让它留有其他的可能性,所以改为>=
//楼主可以想想为什么

{tt=0;}
}
全部回答
你好! 你 的程序对吗? 如有疑问,请追问。
程序都不对
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
服装厂上班累还是电子厂?
烧实心焊丝的时候焊道中间有条形气孔是怎么回
告蒇的意思是什么啊?知道的请说下!
威海电力安装公司怎么去啊,有知道地址的么
绿豆泥可以做什么好吃
预制箱梁浇筑多长时间可以拆内膜
贴吧里这几个表情什吗意思
作为青少年应该怎样传承中华民族传统优秀文化
办公室的室字拼音是什么?
新疆名人在中央任职
阳偏衰所表现的证候是A.实寒B.实热C.虚寒D.虚
流量钱包, 现金购买流量 有效期是90天。可是
春越门业在哪里啊,我有事要去这个地方
现在伸请劳动仲裁是否已超时?应该咋办?
化纤k料与P料的区别
推荐资讯
顺兴快捷宾馆(三门峡卢氏)地址在什么地方,我
旅馆(三门峡陕县)怎么去啊,我要去那办事
《三峡之秋》阅读题参考答案
劳伦斯净水机怎么去啊,有知道地址的么
从平湖到深圳动物园怎样坐车
阳江新振阳好不好?听很多人说交了钱不给你学
无水氯化钙溶于水中后发红怎么回事 如何去除?
各位大虾请问TVB剧集里面的背景音乐都有哪些
青竹坝这个地址在什么地方,我要处理点事
南红玛瑙透明的好还是不透明的好?
志良家电在什么地方啊,我要过去处理事情
Microsoft Office Outlook 2007的邮箱怎么打
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?