找回密码
 立即注册
查看: 380|回复: 9

寻求冲哥视频内的代码

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:19
  • 最近打卡:2024-08-22 07:09:06

4

主题

36

回帖

170

积分

注册会员

积分
170
发表于 2024-7-29 21:46:41 | 显示全部楼层 |阅读模式
本帖最后由 张旭文 于 2024-7-29 21:59 编辑

学习冲哥视频 《STC32位8051单片机原理及应用》

仿照冲哥视频写的代码自己编译不通过,想下载代码对比错误出在哪里了

数码管.c

1.62 KB, 下载次数: 55

回复

使用道具 举报 送花

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

19

主题

3191

回帖

4876

积分

论坛元老

积分
4876
发表于 2024-7-29 22:10:06 | 显示全部楼层
本帖最后由 soma 于 2024-7-29 22:15 编辑
  1. #include "COMM/stc.h"                //调用头文件
  2. #include "COMM/usb.h"
  3. #define KEY1 P32                //定义一个按键 引脚选择P32
  4. #define KEY2 P33                //定义一个按键 引脚选择P33
  5. #define BEEP P54                //定义一个按键 引脚选择P54
  6. #define MAIN_Fosc 24000000UL        //定义主时钟
  7. char *USER_DEVICEDESC = NULL;
  8. char *USER_PRODUCTDESC = NULL;
  9. char *USER_STCISPCMD = "@STCISP#";
  10.        
  11. u8 SEG_Tab[10] = { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 };        //0-9
  12. void sys_init();        //函数声明
  13. void delay_ms(u16 ms);        //unsigned int
  14. void main()                                        //程序开始运行的入口
  15. {
  16.         u8 num = 0;
  17.         sys_init();                                //USB功能+IO口初始化
  18.         usb_init();                                //usb库初始化
  19.         EA = 1;                                        //CPU开放中断,打开总中断。
  20.        
  21.         while(1)                //死循环
  22.         {
  23.                 if( DeviceState != DEVSTATE_CONFIGURED )         //
  24.                         continue;
  25.                 if( bUsbOutReady )                                                               
  26.                 {
  27.                         usb_OUT_done();
  28.                 }
  29.                 P70 = 0;                        //开启一个数码管
  30. //------------------------------------------------P32按下一次,灯往右边边移动一个单位        -----------------------------------------------               
  31. //                P6 = SEG_Tab[num];        //这个数码管输出段码
  32. //                num ++;
  33. //                if( num>9 )
  34. //                        num = 0;
  35. //               
  36. //                delay_ms(1000);
  37.                
  38.                 P6 = SEG_Tab[num];        //这个数码管输出段码
  39.                 if( KEY1 ==0 )
  40.                 {
  41.                         delay_ms(10);
  42.                         if( KEY1 ==0 )
  43.                         {
  44.                                 BEEP = 0;
  45.                                 delay_ms(10);
  46.                                 BEEP = 1;
  47.                                 while( KEY1 ==0 );
  48.                                 if( num<9 )
  49.                                 {
  50.                                         num++;
  51.                                 }
  52.                         }
  53.                 }
  54.                 if( KEY2 ==0 )
  55.                 {
  56.                         delay_ms(10);
  57.                         if( KEY2 ==0 )
  58.                         {
  59.                                 BEEP = 0;
  60.                                 delay_ms(10);
  61.                                 BEEP = 1;                               
  62.                                 while( KEY2 ==0 );
  63.                                 if( num>0 )
  64.                                         num--;
  65.                         }
  66.                 }               
  67.                
  68.         }
  69. }
  70. /*
  71. 11111110 0XFE
  72. 11111101 0XFD
  73. 11111011 0XFB
  74. 11110111 0XF7
  75. 11101111 0XEF
  76. 11011111 0XDF
  77. 10111111 0XBF
  78. 01111111 0X7F
  79. */
  80. void sys_init()                //函数定义
  81. {
  82.     WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
  83.     EAXFR = 1; //扩展寄存器(XFR)访问使能
  84.     CKCON = 0; //提高访问XRAM速度
  85.         P0M1 = 0x00;   P0M0 = 0x00;   //设置为准双向口
  86.     P1M1 = 0x00;   P1M0 = 0x00;   //设置为准双向口
  87.     P2M1 = 0x00;   P2M0 = 0x00;   //设置为准双向口
  88.     P3M1 = 0x00;   P3M0 = 0x00;   //设置为准双向口
  89.     P4M1 = 0x00;   P4M0 = 0x00;   //设置为准双向口
  90.     P5M1 = 0x00;   P5M0 = 0x00;   //设置为准双向口
  91.     P6M1 = 0x00;   P6M0 = 0x00;   //设置为准双向口
  92.     P7M1 = 0x00;   P7M0 = 0x00;   //设置为准双向口
  93.        
  94.     P3M0 = 0x00;
  95.     P3M1 = 0x00;
  96.    
  97.     P3M0 &= ~0x03;
  98.     P3M1 |= 0x03;
  99.     //设置USB使用的时钟源
  100.     IRC48MCR = 0x80;    //使能内部48M高速IRC
  101.     while (!(IRC48MCR & 0x01));  //等待时钟稳定
  102.     USBCLK = 0x00;        //使用CDC功能需要使用这两行,HID功能禁用这两行。
  103.     USBCON = 0x90;
  104. }
  105. void delay_ms(u16 ms)        //unsigned int
  106. {
  107.         u16 i;
  108.         do
  109.         {
  110.                 i = MAIN_Fosc/6000;
  111.                 while(--i);
  112.         }while(--ms);
  113. }
复制代码

你的程序不全,且char*USER DEVICEDESC = NULL;少下划线应该是char*USER_DEVICEDESC = NULL;还有很多缺少下划线如定义和函数部分。
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:19
  • 最近打卡:2024-08-22 07:09:06

4

主题

36

回帖

170

积分

注册会员

积分
170
发表于 2024-7-29 22:33:26 | 显示全部楼层
谢谢
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:19
  • 最近打卡:2024-08-22 07:09:06

4

主题

36

回帖

170

积分

注册会员

积分
170
发表于 2024-7-29 22:37:25 | 显示全部楼层
本帖最后由 张旭文 于 2024-7-29 22:40 编辑
  1. //#include <STC32G.H>
  2. #include "COMM/stc.h"    //调用头文件
  3. #include "COMM/usb.h"
  4. #define KEY1 P32                //定义一个按键 引脚选择P32
  5. #define KEY2 P33                //定义一个按键 引脚选择P33
  6. #define BEEP P54                //定义一个按键 引脚选择P54
  7. #define MAIN_Fosc 24000000UL                //定义主时钟
  8. char *USER_DEVICEDESC = NULL;
  9. char *USER_PRODUCTDESC = NULL;
  10. char *USER_STCISPCMD ="@STCISP#";
  11. u8 SEG_Tab[10]= { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 };                //0-9
  12. void sys_init();                        //函数声明
  13. void delay_ms(u16 ms);        //unsigned int
  14. void main()
  15. {
  16.         u8 num = 0;                //程序开始运行的入口
  17.         sys_init();                //USB功能+I0口初始化
  18.         usb_init();                //usb库初始化
  19.         EA = 1;                        //CPT开放中断,打开总中断。
  20.         
  21.         while(1)                //死循环
  22.         {
  23.                         if( DeviceState != DEVSTATE_CONFIGURED)
  24.                                 continue ;
  25.                 if( bUsbOutReady )
  26.                 {
  27.                         usb_OUT_done();
  28.                
  29.                 }
  30.                         P70 = 0;                //开启一个数码管
  31. //---------------------------------P32按下一次,灯往右边边移动一个单位------------------------
  32. //                P6=SEG Tab[num]:                //这个数码管输出段码
  33. //                num ++ ;
  34. //                if(num>9)
  35. //                num=0;
  36. //
  37. //                delay_ms(1000);
  38.                         
  39.                         P6 = SEG_Tab[num];                //这个数码管输出段码
  40.            
  41.                 if ( KEY1 ==0 )
  42.                         {
  43.                                 //delay_ms(10);
  44.                                 delay_ms(10);
  45.                         //        if( KEY1 ==0)
  46.                                 if( KEY1 ==0 )
  47.                                         {
  48.                                                 
  49.                                                 BEEP = 0;
  50.                                                 delay_ms(10);
  51.                                                 BEEP = 1;
  52.                                                 while( KEY1 ==0 );
  53.                                                 if( num<9)
  54.                                                         {
  55.                                                                 num++;
  56.                                                         }
  57.                                          }
  58.                          }
  59.                         if( KEY2 ==0 )
  60.                                 {
  61.                                         delay_ms(10);
  62.                                         if(KEY2 ==0 )
  63.                                                 {
  64.                                                         BEEP = 0;
  65.                                                         delay_ms(10);
  66.                                                         BEEP = 1;
  67.                                                         while( KEY2 ==0);
  68.                                                         if( num>0 )
  69.                                                                 num--;
  70.                                                 }
  71.                                 }
  72.                 }
  73. }        
  74. void sys_init()                //函数定义
  75. {
  76.     WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
  77.     EAXFR = 1; //扩展寄存器(XFR)访问使能
  78.     CKCON = 0; //提高访问XRAM速度
  79.         P0M1 = 0x00;   P0M0 = 0x00;   //设置为准双向口
  80.     P1M1 = 0x00;   P1M0 = 0x00;   //设置为准双向口
  81.     P2M1 = 0x00;   P2M0 = 0x00;   //设置为准双向口
  82.     P3M1 = 0x00;   P3M0 = 0x00;   //设置为准双向口
  83.     P4M1 = 0x00;   P4M0 = 0x00;   //设置为准双向口
  84.     P5M1 = 0x00;   P5M0 = 0x00;   //设置为准双向口
  85.     P6M1 = 0x00;   P6M0 = 0x00;   //设置为准双向口
  86.     P7M1 = 0x00;   P7M0 = 0x00;   //设置为准双向口
  87.         
  88.     P3M0 = 0x00;
  89.     P3M1 = 0x00;
  90.    
  91.     P3M0 &= ~0x03;
  92.     P3M1 |= 0x03;
  93.     //设置USB使用的时钟源
  94.     IRC48MCR = 0x80;    //使能内部48M高速IRC
  95.     while (!(IRC48MCR & 0x01));  //等待时钟稳定
  96.     USBCLK = 0x00;        //使用CDC功能需要使用这两行,HID功能禁用这两行。
  97.     USBCON = 0x90;
  98. }
  99. void delay_ms(u16 ms)        //unsigned int
  100. {
  101.         u16 i;
  102.         do
  103.         {
  104.                 i = MAIN_Fosc/6000;
  105.                 while(--i);
  106.         }while(--ms);
  107. }
复制代码



代码修改过来后我的还是有32个警告。
截图202407292236538065.jpg
回复 支持 反对

使用道具 举报 送花

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

19

主题

3191

回帖

4876

积分

论坛元老

积分
4876
发表于 2024-7-29 23:14:18 | 显示全部楼层
张*** 发表于 2024-7-29 22:37
代码修改过来后我的还是有32个警告。

这个是使用库函数的问题L57,由于这些函数未使用编译器警告而已,不用管他,如果flash占用不是很大忽略,如果感觉flash不够,在OPTION for target 里面的L251 Misc里面的misc control里面输入REMOVEUNUSED,就可以了。也可disable Warming number 输入57屏蔽警告
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:19
  • 最近打卡:2024-08-22 07:09:06

4

主题

36

回帖

170

积分

注册会员

积分
170
发表于 2024-7-29 23:33:00 | 显示全部楼层
so*** 发表于 2024-7-29 23:14
这个是使用库函数的问题L57,由于这些函数未使用编译器警告而已,不用管他,如果flash占用不是很大忽略, ...

谢谢
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:234
  • 最近打卡:2025-05-02 08:29:31

61

主题

818

回帖

1494

积分

金牌会员

积分
1494
发表于 2024-7-30 12:05:29 | 显示全部楼层
他视频地下讲就有吧
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:352
  • 最近打卡:2025-05-03 00:27:19
已绑定手机

130

主题

1521

回帖

1865

积分

金牌会员

积分
1865
发表于 2024-7-30 19:21:07 | 显示全部楼层
冲哥那个帖子里面有,
我已经下载保存了.
如果找不到的话,联系我,我发给你
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:19
  • 最近打卡:2024-08-22 07:09:06

4

主题

36

回帖

170

积分

注册会员

积分
170
发表于 2024-7-30 19:47:09 | 显示全部楼层
zha*** 发表于 2024-7-30 12:05
他视频地下讲就有吧

已下载  谢谢
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:19
  • 最近打卡:2024-08-22 07:09:06

4

主题

36

回帖

170

积分

注册会员

积分
170
发表于 2024-7-30 19:47:37 | 显示全部楼层
vb2*** 发表于 2024-7-30 19:21
冲哥那个帖子里面有,
我已经下载保存了.
如果找不到的话,联系我,我发给你 ...

已下载 非常感谢
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-3 01:01 , Processed in 0.133358 second(s), 106 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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