打印

STC8G1K08A求助大佬帮写个简单的闪灯程序入行小白学习参考用

[复制链接]
1509|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
carsontang|  楼主 | 2025-4-19 11:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求助大佬使用过STC8G1K08A的帮写个简单的闪灯程序码(第7脚3秒开3秒关连续循环,即LED灯亮3秒灭3秒),入行小白参考用,我用Keil写的都不成功,不知道是否新建工程选的STC8G1K08 Series型号不是对应STC8G1K08A,因为建工程没有STC8G1K08A型号,入行小白参考学习用,感谢!

使用特权

评论回复

相关帖子

沙发
LcwSwust| | 2025-4-19 14:14 | 只看该作者
不对应没关系,可以用AT89S53

使用特权

评论回复
板凳
情场探花| | 2025-4-19 22:27 | 只看该作者
用 STC8G1K08 肯定可以的。你确认“下载”成功了吗?
另外先别急着闪,先让一个脚固定输出 1 或者 0,用万用表量一下,确认下载并运行成功。

使用特权

评论回复
地板
丙丁先生| | 2025-4-20 08:47 | 只看该作者
https://bbs.21ic.com/icview-3447578-1-1.html

使用特权

评论回复
5
kxc2008| | 2025-4-21 08:14 | 只看该作者
这么简单的自己搞定,如果连这都不想弄,那不要学单片机了

使用特权

评论回复
6
bzxc41408| | 2025-4-21 09:23 | 只看该作者
估计是个学生,要参加电子竟赛的选拔吧。 送你一程,以下为参考 1s 一次状态改变:
//========================================================================
//                                头文件
//========================================================================

#include "type_def.h"

#include "STC8G.H"
#include <intrins.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>


//========================================================================
//                               主时钟定义
//========================================================================
#define MAIN_Fosc                24000000L        //定义主时钟
//定时器0做16位自动重装, 中断频率为1000HZ,  1ms   
#define   T0_1mS          (65536UL - (MAIN_Fosc / 1000UL))                        //初值

u8 ucT0_1MS=0;        // 10ms计时  
//========================================================================
// 函数: Timer0_ISR_Handler
// 描述: Timer0中断函数.
// 参数: none.
// 返回: none.
//========================================================================
void Timer0_ISR_Handler (void) interrupt 1                //进中断时已经清除标志
{  //  1ms
        // TODO: 在此处添加用户代码  
   ucT0_1MS++;        // 10ms计时  
}

void main(void)
{
        u8        uc1s=0;
// IO
       
        P3_MODE_IO_PU(GPIO_Pin_1|GPIO_Pin_2);        //P3.1,P3.2 设置为准双向口        
  // 定时器
        AUXR=0xC0;              // 设置为 1T模式
        //定时器0做16位自动重装, 中断频率为1000HZ,  1ms   
        TMOD=0x00;
        TL0=T0_1mS;                               // 初值
        TH0=(T0_1mS)>>8;                    // 初值
       
        TR0=1;
        ET0=1;  
        EA = 1;
        while(1)
        {

           if(ucT0_1MS>=10)
                  {
                    ucT0_1MS=0;        // 10ms定时
                          uc1s++;   // 1s 计时  
                  }

     if(uc1s>=100)   // 1s   
                {
              uc1s=0;
              P31 =~P31;  //  测试点  
              P32 = ~P32; // 此处为1s/次,请根据自己的需求修改  
                            }       
        }
}

使用特权

评论回复
评论
carsontang 2025-4-21 19:00 回复TA
非常感谢! 
7
zjk103| | 2025-4-21 10:29 | 只看该作者
先去下例程看看啊

使用特权

评论回复
8
coody| | 2025-4-21 11:37 | 只看该作者
本帖最后由 coody 于 2025-4-21 11:40 编辑

但凡花点时间学习,都能很容易实现:
main:
将P3.2设设置为输出;
while(1)
{
    P32 = ~P32;
    延时3秒;
}

使用特权

评论回复
9
mwxpk| | 2025-4-25 12:06 | 只看该作者
我笑了,现在不是吹AI吗,这么容易和事AI就给你办了。
#include <STC8G.H>
sbit LED = P3^0;  // 第7脚对应P3.0

void Delay3000ms() {  // @11.0592MHz
    unsigned int i, j;
    for (i = 0; i < 3000; i++)
        for (j = 0; j < 1000; j++);
}

void main() {
    P3M0 = 0x00;      // 准双向模式
    P3M1 = 0x00;
    LED = 0;          // 初始亮
    while(1) {
        LED = ~LED;   // 翻转状态
        Delay3000ms();
    }
}

使用特权

评论回复
10
mwxpk| | 2025-4-25 12:08 | 只看该作者
        #include <STC8G.H>
sbit LED = P3^0;  // 假设第7脚对应P3.0(需根据实际封装确认引脚映射)^[1][2]^

// 定时器初始化
void Timer0_Init() {
    TMOD = 0x01;      // 定时器0工作模式1(16位定时)
    TH0 = 0xD8;       // 初始值设置(11.0592MHz下50ms中断一次)^[11]^
    TL0 = 0xF0;
    ET0 = 1;          // 允许定时器0中断
    EA = 1;           // 全局中断使能
    TR0 = 1;          // 启动定时器0
}

volatile unsigned int count = 0; // 中断计数

void main() {
    P3M0 = 0x00;      // 配置P3为准双向模式^[2][18]^
    P3M1 = 0x00;
    LED = 0;          // 初始状态为亮
    Timer0_Init();
    while(1);
}

// 定时器0中断服务函数
void Timer0_ISR() interrupt 1 {
    TH0 = 0xD8;       // 重新加载初值
    TL0 = 0xF0;
    if (++count >= 60) {  // 50ms*60=3秒
        count = 0;
        LED = ~LED;    // 翻转LED状态
    }
}

使用特权

评论回复
11
咕咕呱呱孤寡| | 2025-4-25 14:51 | 只看该作者
最好是自己看看STC-ISP提供的范例,学一下定时器计时或延时程序,先试一下LED引脚翻转能不能实现,再依次填充

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

粉丝