找回密码
 立即注册
查看: 2178|回复: 11

用三种不同的方式读取唯一的ID,怎么只有第一种方式正常

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:520
  • 最近打卡:2025-05-01 08:06:21

109

主题

1897

回帖

5204

积分

论坛元老

积分
5204
发表于 2023-1-15 18:57:12 | 显示全部楼层 |阅读模式
近日,本人使用STC-ISP工具中的范例,用三种不同的方式读取单片机唯一的ID,怎么只有第一种方式正常,其他两种方式,读出来要么都是00,要么就是ff,不知道是什么原因。

2023-01-15_185257.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:135
  • 最近打卡:2024-12-25 10:15:05

47

主题

1350

回帖

8058

积分

荣誉版主

冲哥视频教程和各种开源资料QQ交流群884047237,可群

积分
8058
QQ
发表于 2023-1-16 09:26:01 | 显示全部楼层
1.png


楼主仔细看手册哦,大大的红字标注了。
  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2023-1-16 09:42:18 | 显示全部楼层
用户新系统设计,尽量选择有CHIP-ID这个功能的芯片,用户自己软加密更强悍
  • 打卡等级:以坛为家I
  • 打卡总天数:383
  • 最近打卡:2025-04-30 09:42:19

40

主题

194

回帖

601

积分

高级会员

积分
601
发表于 2023-1-16 15:03:16 | 显示全部楼层
通过观看冲大侠的讲座,发现一个很有用的规律——遇到问题首先去找厂家相关芯片的最新版技术手册,手册支持搜索功能,很方便。
  • 打卡等级:以坛为家II
  • 打卡总天数:440
  • 最近打卡:2025-05-01 08:46:19

45

主题

176

回帖

1721

积分

金牌会员

积分
1721
发表于 2024-1-23 19:00:25 | 显示全部楼层
每次翻贴都能解疑答惑得到收获,前段时间想读掉电唤醒定时器时钟频率,搞了好久没能成功今天在这里找到了答案再试就成功了,膜拜!
123456.jpg

只是不知道什么原因、烧录代码后打开串口助手收不到数据,改成循环发送就好了。
使用官网例程,主函数中添加加了两句代码转贴这里方便大家测试:
  1. //程序为STC官网例程
  2. //本芯片读出内部掉电时钟频率:8C 6E
  3. #include "stc8h.h"
  4. #include "intrins.h"
  5. #define FOSC    11059200UL
  6. #define BRT     (65536 - FOSC / 115200 / 4)
  7. #define CPUIDBASE   0xfde0
  8. #define F32K_ADDR   (*(unsigned int volatile xdata *)(CPUIDBASE + 0x09))
  9. bit busy;
  10. //------------------------------
  11. void UartIsr() interrupt 4
  12. {
  13.     if (TI)
  14.     {
  15.         TI = 0;
  16.         busy = 0;
  17.     }
  18.     if (RI)
  19.     {
  20.         RI = 0;
  21.     }
  22. }
  23. //------------------------------
  24. void UartInit()
  25. {
  26.     SCON = 0x50;
  27.     TMOD = 0x00;
  28.     TL1 = BRT;
  29.     TH1 = BRT >> 8;
  30.     TR1 = 1;
  31.     AUXR = 0x40;
  32.     busy = 0;
  33. }
  34. //-----------------------------
  35. void UartSend(char dat)
  36. {
  37.     while (busy);
  38.     busy = 1;
  39.     SBUF = dat;
  40. }
  41. //-----------------------------
  42. void Delay500ms(void)        //@11.0592MHz
  43. {
  44.         unsigned char data i, j, k;
  45.         i = 29;
  46.         j = 14;
  47.         k = 54;
  48.         do
  49.         {
  50.                 do
  51.                 {
  52.                         while (--k);
  53.                 } while (--j);
  54.         } while (--i);
  55. }
  56. //----------------------------------
  57. void main()
  58. {
  59.     P_SW2 |= 0x80;  //使能访问XFR
  60.     P0M0 = 0x00;
  61.     P0M1 = 0x00;
  62.     P1M0 = 0x00;
  63.     P1M1 = 0x00;
  64.     P2M0 = 0x00;
  65.     P2M1 = 0x00;
  66.     P3M0 = 0x00;
  67.     P3M1 = 0x00;
  68.     P4M0 = 0x00;
  69.     P4M1 = 0x00;
  70.     P5M0 = 0x00;
  71.     P5M1 = 0x00;
  72.     UartInit();
  73.     ES = 1;
  74.     EA = 1;
  75. while (1)
  76. {
  77.     UartSend(F32K_ADDR >> 8);   //读取32K频率的高字节
  78.     UartSend(F32K_ADDR);        //读取32K频率的低字节
  79. UartSend(0XAA);//加一个数据结尾标志
  80. Delay500ms();//延时便于查看串口接收的数据
  81. }   
  82. }
复制代码





点评

有可能是已经发完了才打开串口助手,默认的1s打开,USB-UART芯片不断电,目标单片机重新上电试试,直接用CDC就延迟几秒再发,或者一直发 [attachimg]33597[/attachimg] [attachimg]33598[/attachimg]  详情 回复 发表于 2024-1-23 22:29
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2024-1-23 19:18:02 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2024-1-23 19:19:49 | 显示全部楼层
截图202401231918251745.jpg

截图202401231918533610.jpg

截图202401231919436874.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2024-1-23 19:20:29 | 显示全部楼层
截图202401231920256015.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-1-23 22:29:33 | 显示全部楼层
乐此*** 发表于 2024-1-23 19:00
每次翻贴都能解疑答惑得到收获,前段时间想读掉电唤醒定时器时钟频率,搞了好久没能成功今天在这里找到了答 ...

有可能是已经发完了才打开串口助手,默认的1s打开,USB-UART芯片不断电,目标单片机重新上电试试,直接用CDC就延迟几秒再发,或者一直发

截图202401232227163290.jpg
截图202401232228136939.jpg

DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:440
  • 最近打卡:2025-05-01 08:46:19

45

主题

176

回帖

1721

积分

金牌会员

积分
1721
发表于 2024-1-24 09:50:31 | 显示全部楼层
Debu*** 发表于 2024-1-23 22:29
有可能是已经发完了才打开串口助手,默认的1s打开,USB-UART芯片不断电,目标单片机重新上电试试,直接用 ...

多谢指点!明白了,确实是因为例程只发送一次数据就塞在while(1);这里了,这边打开串口时那边早已经发送结束了,不管它了,我也比较习惯让他连续发送数据这样在打开串口时总能看到结果、不发懵。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 02:21 , Processed in 0.184102 second(s), 112 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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