找回密码
 立即注册
楼主: Ayb_ice

强烈建议stc32增加16位32位特殊功能寄存器

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:539
  • 最近打卡:2025-10-15 21:55:03

33

主题

2600

回帖

5729

积分

论坛元老

积分
5729
发表于 2025-9-25 11:19:45 | 显示全部楼层
网*** 发表于 2025-9-25 11:09
两次就两次,配置参数又不是每时每刻都要操作,
系统时钟支持高些,速度换性能 ...

两次不就打破了原子性了么。。。感觉还是有区别。
而且论坛里面,也有不少因为两次读取导致出问题的情况。


如果是 一次 ,,这种问题是不是可以避免呢
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:524
  • 最近打卡:2025-10-16 10:25:30

9

主题

475

回帖

3325

积分

论坛元老

积分
3325
发表于 2025-9-25 12:02:45 | 显示全部楼层
_奶*** 发表于 2025-9-25 11:19
两次不就打破了原子性了么。。。感觉还是有区别。
而且论坛里面,也有不少因为两次读取导致出问题的情况。 ...

接受现实吧,为了兼顾广大8位机用户,短时间是没法改变这种现状的
要么等ARM核的型号出来.
再说,即使纯32位处理器,也会有同样也会原子操作问题.这东西只能靠编程技巧来规避了.
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:147
  • 最近打卡:2025-10-15 09:52:07
已绑定手机

18

主题

502

回帖

1726

积分

金牌会员

积分
1726
发表于 2025-9-25 13:09:23 | 显示全部楼层
网*** 发表于 2025-9-25 11:09
两次就两次,配置参数又不是每时每刻都要操作,
系统时钟支持高些,速度换性能 ...

光配置吗,你不读取吗
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:377
  • 最近打卡:2025-10-13 14:16:17

49

主题

146

回帖

1395

积分

金牌会员

积分
1395
发表于 2025-9-25 14:32:33 | 显示全部楼层
重新设计一个单片机架构!性能相当STM32,甚至超过STM32。使用起来又像51那么简单!C51也能支持!看谁来实现这个梦想?
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:539
  • 最近打卡:2025-10-15 21:55:03

33

主题

2600

回帖

5729

积分

论坛元老

积分
5729
发表于 2025-9-25 15:20:21 | 显示全部楼层
网*** 发表于 2025-9-25 12:02
接受现实吧,为了兼顾广大8位机用户,短时间是没法改变这种现状的
要么等ARM核的型号出来.
再说,即使纯32位 ...

话说,一次性读取16位或者32位,是编译器要做的事情,还是芯片要做的事情。前提是芯片的数据总线已经是32位的情况下。


我看现有的8051U 数据总线已经是32位了,,地址总线24位。。应该是允许一次性读取32位数据的。。
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:524
  • 最近打卡:2025-10-16 10:25:30

9

主题

475

回帖

3325

积分

论坛元老

积分
3325
发表于 2025-9-25 16:49:10 | 显示全部楼层
_奶*** 发表于 2025-9-25 15:20
话说,一次性读取16位或者32位,是编译器要做的事情,还是芯片要做的事情。前提是芯片的数据总线已经是32 ...

应该跟编译器有关吧,对32位读写真正高需求的场合,换其他芯片就是.
硬件做再好,没编译器支持也是白瞎,这也是STC一个发展瓶颈了,C51和C251编译器,基本没人维护了.
如果还要发展32位51,未来必然要解决这个问题.不然只能转向ARM之类构架.
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:539
  • 最近打卡:2025-10-15 21:55:03

33

主题

2600

回帖

5729

积分

论坛元老

积分
5729
发表于 2025-9-26 09:55:58 | 显示全部楼层
网*** 发表于 2025-9-25 16:49
应该跟编译器有关吧,对32位读写真正高需求的场合,换其他芯片就是.
硬件做再好,没编译器支持也是白瞎,这也 ...

说的对啊,,我也是觉得输就输在编译器上了。

看着这么好的东西发挥不出来就和难受。。。痛心疾首啊
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:14
  • 最近打卡:2025-09-28 10:47:25

2

主题

205

回帖

1204

积分

金牌会员

积分
1204
发表于 2025-9-26 12:04:45 | 显示全部楼层
_奶*** 发表于 2025-9-26 09:55
说的对啊,,我也是觉得输就输在编译器上了。

看着这么好的东西发挥不出来就和难受。。。痛心疾首啊 ...

看别人搞个C编译器很容易啊,都是移植GCC或LLVM的,看有个人用台湾一家的MCU,厂家没有提供C编译器,就自己用LLVM做了一个C编译器
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:377
  • 最近打卡:2025-10-13 14:16:17

49

主题

146

回帖

1395

积分

金牌会员

积分
1395
发表于 2025-9-26 12:26:20 | 显示全部楼层
自己设计一个最优秀的单片机架构,再鼓捣一个C编译器,你可以做出世界最强大的单片机!
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:686
  • 最近打卡:2025-10-16 00:04:51

11

主题

1246

回帖

6321

积分

论坛元老

积分
6321
发表于 2025-9-26 14:13:35 | 显示全部楼层
Ayb_*** 发表于 2025-9-24 11:21
不要将来啊,现在就应该支持

是的,现在就应该支持了,你可以用Ai8051U



sfr16   T2_16         =           0xd6;
#define T11_16                    (*(unsigned int volatile far *)0x7efe7a)


  168          void TIMER2_Init(void)
  169          {
  170   1      #define T2_PSCR                 (1)
  171   1      #define T2_RELOAD               (65536 - (float)SYSCLK / 12 / (T2_PSCR + 1) * 10 / 1000)
  172   1      
  173   1          TIMER2_TimerMode();                 //设置定时器2为定时模式
  174   1          TIMER2_12TMode();                   //设置定时器2为12T模式
  175   1          TIMER2_EnableInt();                 //使能定时器2中断
  176   1          TIMER2_SetPrescale(T2_PSCR);        //设置定时器2的8位预分频
  177   1      //    TIMER2_SetReload16(T2_RELOAD);      //设置定时器2的16位重载值
  178   1          T2_16 = (T2_RELOAD);
  179   1          TIMER2_Run();                       //定时器2开始运行
  180   1      
  181   1          //<<AICUBE_USER_TIMER2_INITIAL_BEGIN>>
  182   1          // 在此添加用户初始化代码  
  183   1      
  184   1      
  185   1          //<<AICUBE_USER_TIMER2_INITIAL_END>>
  186   1      }

;       FUNCTION TIMER2_Init (BEGIN)
                                                ; SOURCE LINE # 168
                                                ; SOURCE LINE # 173
000000 538EF7         ANL      AUXR,#0F7H
                                                ; SOURCE LINE # 174
000003 538EFB         ANL      AUXR,#0FBH
                                                ; SOURCE LINE # 175
000006 43AF04         ORL      IE2,#04H
                                                ; SOURCE LINE # 176
000009 7401           MOV      A,#01H           ; A=R11
00000B 7E34FEA2       MOV      WR6,#0FEA2H
00000F 7E24007E       MOV      WR4,#07EH
000013 7A1BB0         MOV      @DR4,R11         ; A=R11
                                                ; SOURCE LINE # 178
000016 7E34BEE5       MOV      WR6,#0BEE5H
00001A 7A71D6         MOV      T2_16,R7
00001D 7A61D7         MOV      T2_16+1,R6
                                                ; SOURCE LINE # 179
000020 438E10         ORL      AUXR,#010H
                                                ; SOURCE LINE # 186
000023 22             RET   

  193          void TIMER11_Init(void)
  194          {
  195   1      #define T11_PSCR                (0)
  196   1      #define T11_RELOAD              (65536 - (float)SYSCLK / 12 / (T11_PSCR + 1) * 100 / 1000000)
  197   1      
  198   1          TIMER11_CLK_SYSCLK();               //定时器11使用系统时钟作为时钟源
  199   1      
  200   1          TIMER11_TimerMode();                //设置定时器11为定时模式
  201   1          TIMER11_12TMode();                  //设置定时器11为12T模式
  202   1          TIMER11_EnableInt();                //使能定时器11中断
  203   1          TIMER11_SetPrescale(T11_PSCR);      //设置定时器11的8位预分频
  204   1      //    TIMER11_SetReload16(T11_RELOAD);    //设置定时器11的16位重载值
205   1          T11_16 = (u16)(T11_RELOAD);
  206   1          TIMER11_Run();                      //定时器11开始运行
  207   1      
  208   1          //<<AICUBE_USER_TIMER11_INITIAL_BEGIN>>
  209   1          // 在此添加用户初始化代码  
  210   1      
  211   1      
  212   1          //<<AICUBE_USER_TIMER11_INITIAL_END>>
  213   1      }

;       FUNCTION TIMER11_Init (BEGIN)
                                                ; SOURCE LINE # 193
                                                ; SOURCE LINE # 198
000000 7E34FE78       MOV      WR6,#0FE78H
000004 7E24007E       MOV      WR4,#07EH
000008 7E1BB0         MOV      R11,@DR4         ; A=R11
00000B 54F3           ANL      A,#0F3H          ; A=R11
00000D 7A1BB0         MOV      @DR4,R11         ; A=R11
                                                ; SOURCE LINE # 200
000010 7E1BB0         MOV      R11,@DR4         ; A=R11
000013 54BF           ANL      A,#0BFH          ; A=R11
000015 7A1BB0         MOV      @DR4,R11         ; A=R11
                                                ; SOURCE LINE # 201
000018 7E1BB0         MOV      R11,@DR4         ; A=R11
00001B 54EF           ANL      A,#0EFH          ; A=R11
00001D 7A1BB0         MOV      @DR4,R11         ; A=R11
                                                ; SOURCE LINE # 202
000020 7E1BB0         MOV      R11,@DR4         ; A=R11
000023 4402           ORL      A,#02H           ; A=R11
000025 7A1BB0         MOV      @DR4,R11         ; A=R11
C251 COMPILER V5.60.0,  main                                                               26/09/25  13:44:25  PAGE 9   

                                                ; SOURCE LINE # 203
000028 E4             CLR      A                ; A=R11
000029 7E14FE79       MOV      WR2,#0FE79H
00002D 7E04007E       MOV      WR0,#07EH
000031 7A0BB0         MOV      @DR0,R11         ; A=R11
                                                ; SOURCE LINE # 205
000034 7E54FEB2       MOV      WR10,#0FEB2H
000038 7E14FE7A       MOV      WR2,#0FE7AH
00003C 1B0A50         MOV      @DR0,WR10
                                                ; SOURCE LINE # 206
00003F 7E1BB0         MOV      R11,@DR4         ; A=R11
000042 4480           ORL      A,#080H          ; A=R11
000044 7A1BB0         MOV      @DR4,R11         ; A=R11
                                                ; SOURCE LINE # 213
000047 22             RET      
;       FUNCTION TIMER11_Init (END)


Ai8051U_Timer002.zip (149.52 KB, 下载次数: 6)

回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-10-16 10:26 , Processed in 0.135204 second(s), 106 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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