找回密码
 立即注册
×

00:00:00

您有一张0.1元限时体验卡,马上领取获得VIP尊享特权。

STC8G1KO8A取代STC15W104中遇到的问题

2023-2-22 09:14 来自 ecoo 发布 @ 综合讨论

本帖最后由 ecoo 于 2023-2-22 11:34 编辑

最近在移植一段开源的电调程序到stc8G1K08A,根据手册指引;
改了include,增加了STC8G.h和intrins.h

改了IO配置;
增加了eeprom的iap_tps指令;
复位脚用作IO输出,未改动;
初始化中配置了引脚准双向;
根据例程的eeprom基础操作改了程序的eeprom操作。

编译过程未报错,实际下载程序后,能看到初始化的输出波形,但是主程序没反应,请大佬指正下程序哪里没改到位。
  1. #include<STC8G.h>
  2. #include<intrins.h>
  3. #define u8 unsigned char
  4. #define u16 unsigned int

  5. sbit IN=P5^4;                              //修改引脚定义
  6. //sbit Mode_IN=P5^5;                       //模式引脚

  7. sbit A1=P3^3;
  8. sbit A2=P3^2;
  9. sbit B1=P3^1;
  10. sbit B2=P3^0;

  11. bit turn;
  12. bit stop,go;
  13. bit ok,lose,error;
  14. bit mode;
  15. u8 MARK1,MARK2,low,top,calabration,over,n;
  16. u8 step;
  17. u16 time,tt ;
  18. u16 MAX,MINE,MIDDLE,k;                          //修改冲突的min>>mine
  19. u16 Timer2_value;
  20. u16 phase_time;
  21. int speed;

  22. void Delay100us()                                            //@12.000MHz,修改为Y6指令集
  23. {
  24.         unsigned char i, j;
  25.         _nop_();
  26.         i = 2;
  27.         j = 140;
  28.         do
  29.         {
  30.                 while (--j);
  31.         } while (--i);
  32. }

  33. void delay(u16 t)
  34. {
  35.         while(t--)
  36.         Delay100us();
  37. }

  38. u8 EEPROM_read(u8 address)
  39. {
  40.     char byte;

  41.     IAP_CONTR = 0x80;                           //使能IAP
  42.     IAP_TPS = 12;                               //设置等待参数12MHz
  43.     IAP_CMD = 1;                                //设置IAP读命令
  44.     IAP_ADDRL = address;                        //设置IAP低地址
  45.     IAP_ADDRH = address >> 8;                   //设置IAP高地址
  46.     IAP_TRIG = 0x5a;                            //写触发命令(0x5a)
  47.     IAP_TRIG = 0xa5;                            //写触发命令(0xa5)
  48.     _nop_();
  49.     byte = IAP_DATA;                            //读IAP数据
  50.     IAP_CONTR = 0;                              //关闭IAP功能
  51.     return byte;
  52. }

  53. void EEPROM_write(u8 address,u8 byte)
  54. {
  55.     IAP_CONTR = 0x80;                           //使能IAP
  56.     IAP_TPS = 12;                               //设置等待参数12MHz
  57.     IAP_CMD = 2;                                //设置IAP写命令
  58.     IAP_ADDRL = address;                        //设置IAP低地址
  59.     IAP_ADDRH = address >> 8;                   //设置IAP高地址
  60.     IAP_DATA = byte;                            //写IAP数据
  61.     IAP_TRIG = 0x5a;                            //写触发命令(0x5a)
  62.     IAP_TRIG = 0xa5;                            //写触发命令(0xa5)
  63.     _nop_();
  64.     IAP_CONTR = 0;
  65.         //         IAP_CONTR=0x80;                           //以下为源程序eeprom操作
  66. //  IAP_ADDRL=address;
  67. //  IAP_DATA=byte;
  68. //  IAP_CMD=0x02;
  69. //  IAP_TRIG=0x46;
  70. //  IAP_TRIG=0xb9;
  71.        
  72. }

  73. void EEPROM_clean(u8 address)
  74. {
  75.           IAP_CONTR = 0x80;                           //使能IAP
复制代码

免责声明:

本平台旨在开源共享精神,请勿发布敏感信息,任何违法信息我们将移交公安机关;

热门标签 更多

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

GMT+8, 2025-5-14 21:53 , Processed in 0.062011 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

返回顶部