用布丁橘长大佬的一个led共阳显示都在keil上debug成功了结果烧到箱子里还是没结果
9.4版stc32试验箱。
把试验箱的p6流水灯代码烧进去,发现是可以流水的。
于是对比试验箱的代码和我修改的代码。
都快一致了。用keil的swd仿真,将P6加入到watch里,发现P6都已经可以编程FE,FD了。按理说可以亮了。
结果还是烧进去还是不亮。
#include <STC32G.H>
#include "stdio.h"
#include "intrins.h"
//定义主频35Mhz
#define MAIN_Fosc 35000000UL
#define ON 0
#define OFF 1
typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long int u32;
//==========================================================================
/*************本地常量声明 **************/
/*************IO口定义 **************/
/*************本地变量声明 **************/
u8 i=0;
u8 ledIndex;
u8 code Led_Code[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
/*************本地函数声明 **************/
void delay_ms(u16 ms);
/****************外部函数声明和外部变量声明 *****************/
/******************** 主函数 **************************/
void main()
{
//u8 Led_Code[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
WTST=0;//设置等待时间为0个时钟,cpu速度最快
EAXFR = 1; //扩展寄存器(XFR)访问使能
CKCON = 0; //提高访问XRAM速度
P2M1=0x00;
P2M0=0x00;//设置为准双向口模式
P6M1 = 0xff;
P6M0 = 0xff; //设置为漏极开路(实验箱加了上拉电阻到3.3V)
while(1){
for(i=0;i<8;i++){
//P6=Led_Code;
P6 = ~Led_Code;
delay_ms(300);
}
for(i=1;i<7;i++){
P6 = ~Led_Code;
delay_ms(300);
}
}
}
//简单延时函数,自适应主频,1毫秒*ms
void delay_ms(u16 ms){
u16 i;
do{
i=MAIN_Fosc/6000;
while(--i);
}while(--ms);
}
感谢冲哥指点,我加了
P40 = 0; //LED Power On
但是。依旧是试验箱的八个流水灯不亮。
不过我发现debug时候,设置断点到 P6 = ~Led_Code;,
运行到断点,然后按F10,
每按一次F10,link1D上的灯闪一次。
难道程序烧写进入了link1D去了?{:shocked:}
感谢 冲哥以及 飞哥-KCER001。
在更新了link1D固件后,增加了关于P4的设置
P4M1 = 0x3c; P4M0 = 0x3c; //设置P4.2~P4.5为漏极开路(实验箱加了上拉电阻到3.3V)
P40 = 0; //LED Power On
终于看到了流水灯。{:sweat:}{:victory:}
yzhkpli 发表于 2024-1-24 15:37
感谢冲哥指点,我加了
P40 = 0; //LED Power On
Link1D亮的这个灯好像是串口通信的灯
页:
[1]