找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1956|回复: 4
收起左侧

单片机输出一个闪烁灯电路,为什么程序编的是反的?

[复制链接]
ID:969272 发表于 2021-10-21 18:18 | 显示全部楼层 |阅读模式
本帖最后由 sh1900 于 2021-10-22 18:01 编辑

输出一个闪烁灯电路,为什么编的是反的,即原本S1低电平时,3脚也为低,现在的是S1为低,则3脚为高,S1为高,则3脚为低,反过来了。刚学单片机不懂,哪里的毛病?

2021-10-21_181436.jpg
2021-10-22_180112.jpg


++++++++++++++++++++++++++++++++++++

/*1个定时器,定时100毫秒,,计数4次就是400毫秒,P3.4翻转一次状态,500次*100毫秒,就是50秒*/

#include <STC15F104E.H>

sbit KEY=P3^3;
sbit T04=P3^4;
sbit T50=P3^5;
unsigned int x,y;
void Timer0Init(void)                //100毫秒@6.000MHz
{
        AUXR &= 0x7F;                //定时器时钟12T模式
        TMOD &= 0xF0;                //设置定时器模式
        TL0 = 0xB0;                  //设置定时初始值
        TH0 = 0x3C;                  //设置定时初始值
        TF0 = 0;                     //清除TF0标志
        TR0 = 1;                    //定时器0开始计时
        ET0 = 1;                    //使能定时器0中断
}

void main()
{
        P3M1 = 0x00;
        P3M0 = 0x30;
        Timer0Init();
        EA=1;
        KEY=1;
        while(1);
        }
void time0() interrupt 1
{
        x++;y++;
        if(x>=4)  {T04=~T04;x=0;}
        if(KEY)
        {
        if(y<500)  {T50=0;}
        if(y>=500) {T50=1;}
        if(y>=600)  y=0;
  }
        else
        {
          T50=0;
          y=0;
        }
}


回复

使用道具 举报

ID:963956 发表于 2021-10-21 19:30 | 显示全部楼层
你太粗心了引起的
回复

使用道具 举报

ID:969272 发表于 2021-10-22 08:48 | 显示全部楼层
tg1125 发表于 2021-10-21 19:30
你太粗心了引起的

好歹给个提示,刚学根本不懂,这程序也不是我编的
回复

使用道具 举报

ID:161164 发表于 2021-10-22 09:33 | 显示全部楼层
sh1900 发表于 2021-10-22 08:48
好歹给个提示,刚学根本不懂,这程序也不是我编的

1. 截图的时候要留意截出来的图清不清晰,有没有被遮挡,Part U?的提示窗把主线路都挡住了
2. 问问题的时候尽可能把背景资料,发现的问题,都说出来,如:这程序也不是我编的
3. if(KEY)什么时候为真,为真时又会发生什么事,不为真时又会发生什么事
回复

使用道具 举报

ID:969272 发表于 2021-10-22 18:02 | 显示全部楼层
lkc8210 发表于 2021-10-22 09:33
1. 截图的时候要留意截出来的图清不清晰,有没有被遮挡,Part U?的提示窗把主线路都挡住了
2. 问问题的 ...

原理图线路太简单了,就这几条线,已更新。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表