找回密码
 立即注册
查看: 25|回复: 2

7-1 按键控制LED流水灯模式,江协科技讲普中51单片机开发板STC89C52学习板 配套程序,

[复制链接]
  • 打卡等级:常住居民II
  • 打卡总天数:80
  • 最近打卡:2026-07-23 09:36:34
已绑定手机

231

主题

172

回帖

1081

积分

版主

积分
1081
发表于 2026-7-13 09:29:32 | 显示全部楼层 |阅读模式
7-1 按键控制LED流水灯模式,江协科技讲普中51单片机开发板STC89C52学习板 配套程序, A2标准版
主程序main.C代码如下:



#include <REGX52.H>
#include "Timer0.h"
#include "Key.h"
#include <INTRINS.H>

unsigned char KeyNum,LEDMode;

void main()
{
        P2=0xFE;
        Timer0Init();
        while(1)
        {
                KeyNum=Key();                //获取独立按键键码
                if(KeyNum)                        //如果按键按下
                {
                        if(KeyNum==1)        //如果K1按键按下
                        {
                                LEDMode++;        //模式切换
                                if(LEDMode>=2)LEDMode=0;
                        }
                }
        }
}

void Timer0_Routine() interrupt 1
{
        static unsigned int T0Count;
        TL0 = 0x18;                //设置定时初值
        TH0 = 0xFC;                //设置定时初值
        T0Count++;                //T0Count计次,对中断频率进行分频
        if(T0Count>=500)//分频500次,500ms
        {
                T0Count=0;
                if(LEDMode==0)                        //模式判断
                        P2=_crol_(P2,1);        //LED输出
                if(LEDMode==1)
                        P2=_cror_(P2,1);
        }
}


7-1 按键控制LED流水灯模式.zip

32.61 KB, 下载次数: 1

回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:80
  • 最近打卡:2026-07-23 09:36:34
已绑定手机

231

主题

172

回帖

1081

积分

版主

积分
1081
发表于 2026-7-13 09:30:26 | 显示全部楼层
7-1 按键控制LED流水灯模式,江协科技讲普中51单片机开发板STC89C52学习板 配套程序, A2标准版
独立按键Key.C代码如下:

#include <REGX52.H>
#include "Delay.h"

/**
  * @brief  获取独立按键键码
  * @param  无
  * @retval 按下按键的键码,范围:0~4,无按键按下时返回值为0
  */
unsigned char Key()
{
        unsigned char KeyNumber=0;
        
        if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);KeyNumber=1;}
        if(P3_0==0){Delay(20);while(P3_0==0);Delay(20);KeyNumber=2;}
        if(P3_2==0){Delay(20);while(P3_2==0);Delay(20);KeyNumber=3;}
        if(P3_3==0){Delay(20);while(P3_3==0);Delay(20);KeyNumber=4;}
        
        return KeyNumber;
}


回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:80
  • 最近打卡:2026-07-23 09:36:34
已绑定手机

231

主题

172

回帖

1081

积分

版主

积分
1081
发表于 2026-7-13 09:31:09 | 显示全部楼层
7-1 按键控制LED流水灯模式,江协科技讲普中51单片机开发板STC89C52学习板 配套程序, A2标准版
定时器Timer0.C代码如下:

#include <REGX52.H>

/**
  * @brief  定时器0初始化,1毫秒@12.000MHz
  * @param  无
  * @retval 无
  */
void Timer0Init(void)
{
        TMOD &= 0xF0;                //设置定时器模式
        TMOD |= 0x01;                //设置定时器模式
        TL0 = 0x18;                //设置定时初值
        TH0 = 0xFC;                //设置定时初值
        TF0 = 0;                //清除TF0标志
        TR0 = 1;                //定时器0开始计时
        ET0=1;
        EA=1;
        PT0=0;
}

/*定时器中断函数模板
void Timer0_Routine() interrupt 1
{
        static unsigned int T0Count;
        TL0 = 0x18;                //设置定时初值
        TH0 = 0xFC;                //设置定时初值
        T0Count++;
        if(T0Count>=1000)
        {
                T0Count=0;
               
        }
}
*/


回复

使用道具 举报 送花

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-7-24 06:49 , Processed in 0.067131 second(s), 50 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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