寻求冲哥视频内的代码
本帖最后由 张旭文 于 2024-7-29 21:59 编辑学习冲哥视频 《STC32位8051单片机原理及应用》
仿照冲哥视频写的代码自己编译不通过,想下载代码对比错误出在哪里了
本帖最后由 soma 于 2024-7-29 22:15 编辑
#include "COMM/stc.h" //调用头文件
#include "COMM/usb.h"
#define KEY1 P32 //定义一个按键 引脚选择P32
#define KEY2 P33 //定义一个按键 引脚选择P33
#define BEEP P54 //定义一个按键 引脚选择P54
#define MAIN_Fosc 24000000UL //定义主时钟
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
u8 SEG_Tab = { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 }; //0-9
void sys_init(); //函数声明
void delay_ms(u16 ms); //unsigned int
void main() //程序开始运行的入口
{
u8 num = 0;
sys_init(); //USB功能+IO口初始化
usb_init(); //usb库初始化
EA = 1; //CPU开放中断,打开总中断。
while(1) //死循环
{
if( DeviceState != DEVSTATE_CONFIGURED ) //
continue;
if( bUsbOutReady )
{
usb_OUT_done();
}
P70 = 0; //开启一个数码管
//------------------------------------------------P32按下一次,灯往右边边移动一个单位 -----------------------------------------------
// P6 = SEG_Tab; //这个数码管输出段码
// num ++;
// if( num>9 )
// num = 0;
//
// delay_ms(1000);
P6 = SEG_Tab; //这个数码管输出段码
if( KEY1 ==0 )
{
delay_ms(10);
if( KEY1 ==0 )
{
BEEP = 0;
delay_ms(10);
BEEP = 1;
while( KEY1 ==0 );
if( num<9 )
{
num++;
}
}
}
if( KEY2 ==0 )
{
delay_ms(10);
if( KEY2 ==0 )
{
BEEP = 0;
delay_ms(10);
BEEP = 1;
while( KEY2 ==0 );
if( num>0 )
num--;
}
}
}
}
/*
11111110 0XFE
11111101 0XFD
11111011 0XFB
11110111 0XF7
11101111 0XEF
11011111 0XDF
10111111 0XBF
01111111 0X7F
*/
void sys_init() //函数定义
{
WTST = 0;//设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
EAXFR = 1; //扩展寄存器(XFR)访问使能
CKCON = 0; //提高访问XRAM速度
P0M1 = 0x00; P0M0 = 0x00; //设置为准双向口
P1M1 = 0x00; P1M0 = 0x00; //设置为准双向口
P2M1 = 0x00; P2M0 = 0x00; //设置为准双向口
P3M1 = 0x00; P3M0 = 0x00; //设置为准双向口
P4M1 = 0x00; P4M0 = 0x00; //设置为准双向口
P5M1 = 0x00; P5M0 = 0x00; //设置为准双向口
P6M1 = 0x00; P6M0 = 0x00; //设置为准双向口
P7M1 = 0x00; P7M0 = 0x00; //设置为准双向口
P3M0 = 0x00;
P3M1 = 0x00;
P3M0 &= ~0x03;
P3M1 |= 0x03;
//设置USB使用的时钟源
IRC48MCR = 0x80; //使能内部48M高速IRC
while (!(IRC48MCR & 0x01));//等待时钟稳定
USBCLK = 0x00; //使用CDC功能需要使用这两行,HID功能禁用这两行。
USBCON = 0x90;
}
void delay_ms(u16 ms) //unsigned int
{
u16 i;
do
{
i = MAIN_Fosc/6000;
while(--i);
}while(--ms);
}
你的程序不全,且char*USER DEVICEDESC = NULL;少下划线应该是char*USER_DEVICEDESC = NULL;还有很多缺少下划线如定义和函数部分。 谢谢 本帖最后由 张旭文 于 2024-7-29 22:40 编辑
//#include <STC32G.H>
#include "COMM/stc.h" //调用头文件
#include "COMM/usb.h"
#define KEY1 P32 //定义一个按键 引脚选择P32
#define KEY2 P33 //定义一个按键 引脚选择P33
#define BEEP P54 //定义一个按键 引脚选择P54
#define MAIN_Fosc 24000000UL //定义主时钟
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD ="@STCISP#";
u8 SEG_Tab= { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 }; //0-9
void sys_init(); //函数声明
void delay_ms(u16 ms); //unsigned int
void main()
{
u8 num = 0; //程序开始运行的入口
sys_init(); //USB功能+I0口初始化
usb_init(); //usb库初始化
EA = 1; //CPT开放中断,打开总中断。
while(1) //死循环
{
if( DeviceState != DEVSTATE_CONFIGURED)
continue ;
if( bUsbOutReady )
{
usb_OUT_done();
}
P70 = 0; //开启一个数码管
//---------------------------------P32按下一次,灯往右边边移动一个单位------------------------
// P6=SEG Tab: //这个数码管输出段码
// num ++ ;
// if(num>9)
// num=0;
//
// delay_ms(1000);
P6 = SEG_Tab; //这个数码管输出段码
if ( KEY1 ==0 )
{
//delay_ms(10);
delay_ms(10);
// if( KEY1 ==0)
if( KEY1 ==0 )
{
BEEP = 0;
delay_ms(10);
BEEP = 1;
while( KEY1 ==0 );
if( num<9)
{
num++;
}
}
}
if( KEY2 ==0 )
{
delay_ms(10);
if(KEY2 ==0 )
{
BEEP = 0;
delay_ms(10);
BEEP = 1;
while( KEY2 ==0);
if( num>0 )
num--;
}
}
}
}
void sys_init() //函数定义
{
WTST = 0;//设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
EAXFR = 1; //扩展寄存器(XFR)访问使能
CKCON = 0; //提高访问XRAM速度
P0M1 = 0x00; P0M0 = 0x00; //设置为准双向口
P1M1 = 0x00; P1M0 = 0x00; //设置为准双向口
P2M1 = 0x00; P2M0 = 0x00; //设置为准双向口
P3M1 = 0x00; P3M0 = 0x00; //设置为准双向口
P4M1 = 0x00; P4M0 = 0x00; //设置为准双向口
P5M1 = 0x00; P5M0 = 0x00; //设置为准双向口
P6M1 = 0x00; P6M0 = 0x00; //设置为准双向口
P7M1 = 0x00; P7M0 = 0x00; //设置为准双向口
P3M0 = 0x00;
P3M1 = 0x00;
P3M0 &= ~0x03;
P3M1 |= 0x03;
//设置USB使用的时钟源
IRC48MCR = 0x80; //使能内部48M高速IRC
while (!(IRC48MCR & 0x01));//等待时钟稳定
USBCLK = 0x00; //使用CDC功能需要使用这两行,HID功能禁用这两行。
USBCON = 0x90;
}
void delay_ms(u16 ms) //unsigned int
{
u16 i;
do
{
i = MAIN_Fosc/6000;
while(--i);
}while(--ms);
}
代码修改过来后我的还是有32个警告。 张旭文 发表于 2024-7-29 22:37
代码修改过来后我的还是有32个警告。
这个是使用库函数的问题L57,由于这些函数未使用编译器警告而已,不用管他,如果flash占用不是很大忽略,如果感觉flash不够,在OPTION for target 里面的L251 Misc里面的misc control里面输入REMOVEUNUSED,就可以了。也可disable Warming number 输入57屏蔽警告 soma 发表于 2024-7-29 23:14
这个是使用库函数的问题L57,由于这些函数未使用编译器警告而已,不用管他,如果flash占用不是很大忽略, ...
谢谢 他视频地下讲就有吧{:4_168:}{:4_168:} 冲哥那个帖子里面有,
我已经下载保存了.
如果找不到的话,联系我,我发给你 zhange 发表于 2024-7-30 12:05
他视频地下讲就有吧
已下载谢谢 vb2002 发表于 2024-7-30 19:21
冲哥那个帖子里面有,
我已经下载保存了.
如果找不到的话,联系我,我发给你 ...
已下载 非常感谢
页:
[1]