找回密码
 立即注册
查看: 802|回复: 13

Ai8H8K64U写了程序不跑,求高手指点

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2024-11-03 23:32:15

1

主题

9

回帖

61

积分

注册会员

积分
61
发表于 2024-10-25 00:48:57 | 显示全部楼层 |阅读模式
本帖最后由 DebugLab 于 2024-10-25 09:19 编辑

几年没有接触STC单片机了, 上周画了一个板子,用单片机控制显示屏部分的RESET和DISPLAY时序,现在写的程序上电不跑,请高手指点下我的问题出在哪里,甚谢!
用的是STC8H8K64U-45I-LQFP32 ,单片机只控制显示屏的上电和下电时序,打了全出PIN的小板,实现模块化,方便替换。
原代码如附件(复杂点的代码我都删掉了,只要这个程序能跑起来,后面就能在这个基础上添加即可);
担心是P3.0,P3.1,P3.2开机低电平,使得STC进入烧录模式,跳线10K排阻上拉后,开机仍然未侦测到跑程序;
请高手帮忙确认下是什么原因导致了开机不工作;
非常感谢!



  

截图202410241122302789.jpg
截图202410241128013646.jpg

显示屏部分原理图.pdf

186.32 KB, 下载次数: 67

单片机与显示部分的原理图

STC8H8K64U.c

2.16 KB, 下载次数: 64

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-04-27 14:40:11
已绑定手机

16

主题

468

回帖

2165

积分

版主

积分
2165
QQ
发表于 2024-10-25 08:45:45 | 显示全部楼层
本帖最后由 8H8K64U 于 2024-10-25 08:49 编辑

坐等高手
www.STCAI.com
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2024-10-25 09:11:01 | 显示全部楼层
你提供的程序不太完整,例如看不到“PWR_ON”、“ADC3”是什么。
烧录附件简单的IO口测试程序到芯片里试试看,用示波器/万用表/指示灯就能查看效果。

IO口测试-P2.zip

5.5 KB, 下载次数: 51

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:454
  • 最近打卡:2025-05-03 00:18:42
已绑定手机

13

主题

1257

回帖

2979

积分

金牌会员

积分
2979
发表于 2024-10-25 09:47:54 | 显示全部楼层
先跑一个IO的LED闪烁来验证一下是否可以正常跑
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:294
  • 最近打卡:2025-03-06 09:25:41

8

主题

318

回帖

1835

积分

金牌会员

积分
1835
发表于 2024-10-25 10:08:12 | 显示全部楼层
你的代码有很多全型符号
你确定编译没报错?
2024-10-25_100634.png

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:424
  • 最近打卡:2025-05-03 00:02:01
已绑定手机

19

主题

3191

回帖

4876

积分

论坛元老

积分
4876
发表于 2024-10-25 11:16:52 来自手机 | 显示全部楼层
不行跑个流水灯就知道有没有问题了

点评

没错!先跑个灯看看就知道  发表于 2024-10-25 11:54
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2024-11-03 23:32:15

1

主题

9

回帖

61

积分

注册会员

积分
61
发表于 2024-10-28 17:16:35 | 显示全部楼层
乘风*** 发表于 2024-10-25 09:11
你提供的程序不太完整,例如看不到“PWR_ON”、“ADC3”是什么。
烧录附件简单的IO口测试程序到芯片里试试 ...

烧录正常,没有波形,我用逻辑分析仪抓的。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2024-11-03 23:32:15

1

主题

9

回帖

61

积分

注册会员

积分
61
发表于 2024-10-28 17:20:59 | 显示全部楼层
本帖最后由 retsen 于 2024-10-28 17:33 编辑
Lkck*** 发表于 2024-10-25 10:08
你的代码有很多全型符号
你确定编译没报错?


        #include "stc8h.h"      
  #include "intrins.h"

        #define  MAIN_Fosc       12000000L   //define main Clock 12M
        typedef     unsigned char   u8;
        typedef     unsigned int    u16;
        typedef     unsigned long   u32;

        void GPIO_Init(void); //
        void Delayus(int t0);
        void Delayms(int t1);
        void Power_off(void);
        void Power_on(void);
        
        sbit Touch_reset = P0^3; //OUTPUT
        sbit DISP        = P1^4; //OUTPUT        
        sbit DD_reset    = P1^6; //OUTPUT
        sbit Scan_on_off = P2^4; //INPUT Scan Power Switch
        sbit Main_board_power_on = P2^7; //OUTPUT  控制主板开机
        sbit PON         = P3^5; //LCD ON
        //===========================================//

        

        //===========================================//
        void GPIO_Init(void)
        {  
        //        P_SW2 |= 0x80;  

                P0M1 = 0x00;   
                P0M0 = 0x00;   
                P1M1 = 0x00;   
                P1M0 = 0x00;   
                P2M1 = 0x00;   
                P2M0 = 0x00;   
                P3M1 = 0x00;  
                P3M0 = 0x00;   
        }


        void Delayus(int t0)  // /* X1us */
        {
                int i,j;
                for(i=0;i<t0;i++)
                                for(j=0;j<12;j++);  //1T=0.083us ,1us=12*1T
        }
        //===========================================//
        void Delayms(int t1)
        {
        unsigned int i;
        do
        {
        i=MAIN_Fosc/12000;  //1T=0.083us ,1ms=12000*1T
        while(--i);
        }
        while(--t1);
        }               

        //===========================================//
        void Power_on()
        {
        if(Scan_on_off==1)   //
    {
          DD_reset=0;     // P16=0
          Touch_reset=0;  //P03=0
          DISP=0;   //P36=0
                PON=0;
          Delayms(100);
          DD_reset=1;     //P16=1
          Delayms(50);     
          Touch_reset=1;  //P03=1
                DISP = 1;
          Delayms(150);
          PON =1;  //P36=1
        }
                else{}
}
        
        //===========================================//
        void Power_off()
        {
        if(Scan_on_off==0)      //ADC3=0,POWER OFF
        {
        Main_board_power_on=0;    //主板电源控制端接地,执行关机程序
        PON =0;  //P36=0  
        Delayms(150);
        DD_reset=0; // P16=0
        Touch_reset=0;        //P03=0
        DISP =0;        
        }
  else
        {
         
  }
        
}
        //============================================//

        void main(void)
        {   
        
   GPIO_Init();
   if (Scan_on_off==0)  //POWER off
        {
        Power_off();
        }
        else
        {
        Power_on();        
        }
        }               
//====================之前是随便敲的,上面这个编译是OK的,但烧录后,无波形输出,我的P30~P32 是悬空的,是否一定要上拉才行?RESET也没有加RC,我烧录其他PWM例程,是可以输出波形的。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2024-10-28 17:22:00 | 显示全部楼层
本帖最后由 乘风飞扬 于 2024-10-28 17:23 编辑
ret*** 发表于 2024-10-28 17:16
烧录正常,没有波形,我用逻辑分析仪抓的。

直接烧录我提供例程包里面的hex文件,然后用示波器/逻辑分析仪抓P20~P23口信号。
如果还是抓不到信号的话,要检查你的硬件跟操作方法了。
拍个完整的操作视频传上来看看。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2024-11-03 23:32:15

1

主题

9

回帖

61

积分

注册会员

积分
61
发表于 2024-10-28 17:48:24 | 显示全部楼层
乘风*** 发表于 2024-10-28 17:22
直接烧录我提供例程包里面的hex文件,然后用示波器/逻辑分析仪抓P20~P23口信号。
如果还是抓不到信号的话 ...

E:\Rens\IO扫描.bmp

测了可以输出正常的波形
IO扫描.bmp
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-3 15:01 , Processed in 0.548284 second(s), 118 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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