找回密码
 立即注册
查看: 3112|回复: 57

stc32-9.6试验箱演示程序移植为usb自动下载

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:268
  • 最近打卡:2025-06-17 07:01:20

62

主题

830

回帖

1552

积分

金牌会员

积分
1552
发表于 2024-6-1 17:07:30 | 显示全部楼层 |阅读模式
本帖最后由 zhange 于 2024-6-1 20:38 编辑

今天说仔细研究下试验箱,一看程序有的是2013年写的,下载比较麻烦,于是打着学习的目的给程序都加上热下载吧(这里应该叫啥?)

自己用isp软件下载好头文件到下图路径  自己安装到哪里选择好  或者放到程序包的根目录

截图202406012037081727.jpg



截图202406011706599536.jpg


本着全部都移植的心,慢慢来搞一个发一个。。

回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:268
  • 最近打卡:2025-06-17 07:01:20

62

主题

830

回帖

1552

积分

金牌会员

积分
1552
发表于 2024-6-1 17:11:39 | 显示全部楼层

第零个没啥意思,设置端口没演示

01.1-用P6口做跑马灯-入门版


01.1-用P6口做跑马灯-入门版.zip (108.56 KB, 下载次数: 58)

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:268
  • 最近打卡:2025-06-17 07:01:20

62

主题

830

回帖

1552

积分

金牌会员

积分
1552
发表于 2024-6-1 17:25:01 | 显示全部楼层
01.1-用P6口做跑马灯-入门版  解读

主要代码就是控制p60-p67输出高低电平,注意试验箱上的接了一个pnp三极管需要p40输出低电平。

截图202406011724558346.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:268
  • 最近打卡:2025-06-17 07:01:20

62

主题

830

回帖

1552

积分

金牌会员

积分
1552
发表于 2024-6-1 17:43:01 | 显示全部楼层
01.2-用P6口做跑马灯


01.2-用P6口做跑马灯.zip (107.41 KB, 下载次数: 60)

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:268
  • 最近打卡:2025-06-17 07:01:20

62

主题

830

回帖

1552

积分

金牌会员

积分
1552
发表于 2024-6-1 17:44:56 | 显示全部楼层
01.2-用P6口做跑马灯  解读


u8 ledNum[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};



0x01 = 0000 0001B;

把数组映射到p6口  

每500毫秒转换一个口
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:268
  • 最近打卡:2025-06-17 07:01:20

62

主题

830

回帖

1552

积分

金牌会员

积分
1552
发表于 2024-6-1 20:33:51 | 显示全部楼层
02-Timer0-Timer1-Timer2-Timer3-Timer4测试程序


这又是一个没有示波器看不见效果的代码


#define Timer0_Reload   (MAIN_Fosc / 1000)      //Timer 0 中断频率, 1000次/秒
#define Timer1_Reload   (MAIN_Fosc / 2000)      //Timer 1 中断频率, 2000次/秒
#define Timer2_Reload   (MAIN_Fosc / 3000)      //Timer 2 中断频率, 3000次/秒
#define Timer3_Reload   (MAIN_Fosc / 4000)      //Timer 3 中断频率, 4000次/秒
#define Timer4_Reload   (MAIN_Fosc / 5000)      //Timer 4 中断频率, 5000次/秒


哈哈

我给改了改成一个中断零了   不知道咋回事全部中断打开  usb端口会失效

我给改成了2秒一闪的了 中断频率没变  加了个全局变量

  1. void timer0_int (void) interrupt 1
  2. {
  3.         i++;
  4.         if(i>=1000)
  5.         {
  6.                 i = 0;
  7.                 P67 = ~P67;
  8.                 P61 = ~P61;
  9.         }
  10. }
复制代码


02-Timer0-Timer1-Timer2-Timer3-Timer4测试程序.zip (111.27 KB, 下载次数: 63)


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:268
  • 最近打卡:2025-06-17 07:01:20

62

主题

830

回帖

1552

积分

金牌会员

积分
1552
发表于 2024-6-1 20:39:40 | 显示全部楼层
本帖最后由 zhange 于 2024-6-1 20:47 编辑

02-Timer0-Timer1-Timer2-Timer3-Timer4    原代码解读


  1. void Timer1_init(void)
  2. {
  3.         TR1 = 0;    //停止计数
  4.     #if (Timer1_Reload < 64)    // 如果用户设置值不合适, 则不启动定时器
  5.         #error "Timer1设置的中断过快!"
  6.     #elif ((Timer1_Reload/12) < 65536UL)    // 如果用户设置值不合适, 则不启动定时器
  7.         ET1 = 1;    //允许中断
  8.     //  PT1 = 1;    //高优先级中断
  9.         TMOD &= ~0x30;
  10.         TMOD |= (0 << 4);   //工作模式, 0: 16位自动重装, 1: 16位定时/计数, 2: 8位自动重装
  11.     //  T1_CT = 1;  //计数
  12.         T1_CT = 0;  //定时
  13.     //  T1CLKO = 1; //输出时钟
  14.         T1CLKO = 0; //不输出时钟
  15.         #if (Timer1_Reload < 65536UL)
  16.             T1x12 = 1;  //1T mode
  17.             TH1 = (u8)((65536UL - Timer1_Reload) / 256);
  18.             TL1 = (u8)((65536UL - Timer1_Reload) % 256);
  19.         #else
  20.             T1x12 = 0;  //12T mode
  21.             TH1 = (u8)((65536UL - Timer1_Reload/12) / 256);
  22.             TL1 = (u8)((65536UL - Timer1_Reload/12) % 256);
  23.         #endif
  24.         TR1 = 1;    //开始运行
  25.     #else
  26.         #error "Timer1设置的中断过慢!"
  27.     #endif
  28. }
复制代码




主要是红色部分:

#if (Timer1_Reload < 65536UL)
T1x12 = 1; //1T mode
TH1 = (u8)((65536UL - Timer1_Reload) / 256);     
TL1 = (u8)((65536UL - Timer1_Reload) % 256);




结合下边代码带进去计算
#define Timer1_Reload   (MAIN_Fosc / 2000)      //Timer 1 中断频率, 2000次/秒


Timer1_Reload = 24000000/2000 = 12000


TH1 = (u8)((65536UL - Timer1_Reload) / 256);     



带进去就为 209.1  换为 十六进制 为0x D1


截图202406012046506742.jpg


其实直接在isp设置多简单。。。。。。。。。。。。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:268
  • 最近打卡:2025-06-17 07:01:20

62

主题

830

回帖

1552

积分

金牌会员

积分
1552
发表于 2024-6-2 05:54:12 | 显示全部楼层
03-用P6,P7qudong8个shu码管   汉字keil显示乱码 我把名字改了

03-用P6,P7qudong8个shu码管.zip (112.89 KB, 下载次数: 62)




回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:268
  • 最近打卡:2025-06-17 07:01:20

62

主题

830

回帖

1552

积分

金牌会员

积分
1552
发表于 2024-6-2 06:13:21 | 显示全部楼层
03-用P6,P7qudong8个shu码管   简单原理分析


这利用到了数码管循环扫描显示  为啥看起来不闪?因为人眼有辉光暂留   扫描周期只要不大于20-40毫秒就分辨不出来  

这里的扫描周期8毫秒

P7 = ~T_COM[7-display_index];  


P7和P6按位取反 是因为共阳数码管  阳极接法  有个pnp三极管 P7相关位必须输出低电压才有电流流进去

截图202406020600478857.jpg


截图202406020602071972.jpg


其实1毫秒时间还可以再往上加加到2毫秒测试  我测试了2毫秒可以  但是4毫秒就看出来闪了  

为啥不能三毫秒?因为1秒等于1000毫秒   除于三除不尽
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:268
  • 最近打卡:2025-06-17 07:01:20

62

主题

830

回帖

1552

积分

金牌会员

积分
1552
发表于 2024-6-2 06:17:30 | 显示全部楼层
注意:用到中断的地方 不要忘了开对应中断和中断总开关
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-19 04:31 , Processed in 0.126829 second(s), 94 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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