找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 180|回复: 11
打印 上一主题 下一主题
收起左侧

下载程序后STC8G1K08A单片机不运行,帮忙看看是那里有问题

[复制链接]
跳转到指定楼层
楼主
程序代码
#include"stc8g.h"
#define uchar unsigned char
#define uint unsigned int
sbit LED = P5^4;  //定义IO管脚
int counter; //计数变量
void InitTimer0()   //中断函数      
{
    TMOD = 0x01;
    TH0=(65536-60000)/256; //50ms
    TL0=(65536-60000)%256;
    EA = 1;     //允许CPU中断
    ET0 = 1;   //定时器0中断打开
    TR0 = 1;  //启动定时器
}   

/*--------------------------主函数------------------------------*/
void main()
{         
        P3M0 = 0x00; //设置P3.0~P3.7为双向口模式
        P3M1 = 0x00;
        P5M0 = 0x00;
        P5M1 = 0x00;
        InitTimer0(); //初始化定时器
        LED  = 0; //IO初始化为低电平
        while(1);   
}
void Timer0() interrupt 1 //启用中断组1
{      
        TH0=(65536-60000)/256; //装初值
        TL0=(65536-60000)%256;
        counter++; //产生200MS的脉冲 等待ECU检测
        if(counter >= 1000)  { LED  = 1;}   //延时30S                             
        else if(counter >= 1950)  { LED  = 0; counter = 0; TR0 = 0; }      
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1110945 发表于 2024-4-18 16:28 | 只看该作者
中断里面为什么还要再“装初值”?
中断里面“1950”那一行前面不能用“else”,要直接用“if”,
加了else之后这一行就变得没有意义了(比较的结果永远为“否”),
因为在小于1000的数字里面永远没有大于1950的数字。
回复

使用道具 举报

板凳
ID:1109793 发表于 2024-4-18 16:58 | 只看该作者
1950已经在>=1000的条件之内了。你可以把else 去掉,或者两个>=都改成==
回复

使用道具 举报

地板
ID:56002 发表于 2024-4-18 17:13 | 只看该作者
明日之星8 发表于 2024-4-18 16:28
中断里面为什么还要再“装初值”?
中断里面“1950”那一行前面不能用“else”,要直接用“if”,
加了el ...

屏蔽中断,在while里将LED置高,P5^4 IO 管脚还是没有输出,是IO的配置问题吗?
回复

使用道具 举报

5#
ID:69038 发表于 2024-4-18 17:26 | 只看该作者
如果是这样,个人觉得,就该是>=1950在前,然后才是>=1000.
但<1000时会是什么情况呢?
回复

使用道具 举报

6#
ID:1109793 发表于 2024-4-18 17:35 | 只看该作者
oplink 发表于 2024-4-18 17:13
屏蔽中断,在while里将LED置高,P5^4 IO 管脚还是没有输出,是IO的配置问题吗?

虽然标准模式IO的高电平输出比较弱,但是点亮LED还是可以的,虽然亮度可能比较低
回复

使用道具 举报

7#
ID:1109793 发表于 2024-4-18 17:36 | 只看该作者
zhuls 发表于 2024-4-18 17:26
如果是这样,个人觉得,就该是>=1950在前,然后才是>=1000.

啥情况也没有
回复

使用道具 举报

8#
ID:1109793 发表于 2024-4-18 17:37 | 只看该作者
oplink 发表于 2024-4-18 17:13
屏蔽中断,在while里将LED置高,P5^4 IO 管脚还是没有输出,是IO的配置问题吗?

试试P5M0 = 0X10;设置推挽模式,应该就比较亮了
回复

使用道具 举报

9#
ID:1110945 发表于 2024-4-18 17:38 | 只看该作者
oplink 发表于 2024-4-18 17:13
屏蔽中断,在while里将LED置高,P5^4 IO 管脚还是没有输出,是IO的配置问题吗?

点亮发光管只要三句,



回复

使用道具 举报

10#
ID:1109793 发表于 2024-4-18 17:57 | 只看该作者
明日之星8 发表于 2024-4-18 17:38
点亮发光管只要三句,

编辑器的字好大
回复

使用道具 举报

11#
ID:1110945 发表于 2024-4-18 20:03 | 只看该作者

这还不是最大的,可以随意调的,好像是“Ctrl+鼠标滚轮转动”调的。
回复

使用道具 举报

12#
ID:56002 发表于 2024-4-19 08:22 | 只看该作者
明日之星8 发表于 2024-4-18 17:38
点亮发光管只要三句,

按照你给的配置就可以了,谢谢!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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