找回密码
 立即注册
查看: 53|回复: 4

32G12K128串口设置成SPI

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-09-04 22:05:40

5

主题

4

回帖

47

积分

新手上路

积分
47
发表于 4 天前 | 显示全部楼层 |阅读模式
32G12K128串口1/2可以设置成SPI模式。经过测试,发现有些问题,来请专家和同行高手解答。要把该芯片设置成SPI模式,一要把SCON中串口模式设置为同步模式,如果设置成其它模式,则只能设置成普通串口(就是说这里优先级高于后面的SPI模式与功能设置)。二是把SCON中的“REN”位置1,否则无法产生中断,中断标志和中断入口地址都是在相应串口位置。三是把USARTCR1中的“SPMOD”和“SPIEN”都设为“1”,设置成SPI模式及启用SPI功能。四是设置好USARTCR4中的时钟频率。现在的问题是:一是,如果设置成主机,只有发送结束中断(TI),不会发生接收中断(RI),按理SPI在发送的同时,也接收数据;如果设置成从机,情况怎样没有测试,可能只有接收中断,这个应该没有问题。对于主机模式,产生TI中断时,实际并未发送结束(经示波器查看,还差一个SPI时钟同期),也就是说提前产生中断,这个是可以理解为提高系统运行速度,但此时如果向SBUF写入新的将要发送的数据,被自动放弃,这样如果要在TI中断周期内放新的数据,必须要延时一个SPI时钟周期,这是十分麻烦的。同样,在这个周期内读取从“从机”发来的数据,也是错误的(还差一位),如果主机能产生RI中断,那应该比较方便,也比较准确地收到从“从机”取回的数据。我参考了STC32的例程,我的设置跟例程无异,但例程里编了个串口1/2之间的SPI模式通信,因为我没有这个实验箱,无法验证,要想除非是我设置有错误,或者这个例程产生中断后,程序运行速率较慢(可能有其它无用程序造成延时,我用的是汇编,速率较快),无意中延时了一个SPI时钟同期,才把新的发送数据放到SBUF中去,所以没有表现出我说的问题。我的上述问题烦请专家或同行高手帮我分析一下,是哪里出了问题,还是芯片缺陷?我把汇编程序附上:
MOV        S2CON,#10H              ;开启串口收
MOV WR6,#WORD0(USART2CR1)        ;将串口2设置为SPI模式

        MOV        WR4,#WORD2(USART2CR1)
        MOV        A,#1BH                ;主机方式,高位在前,时钟空闲是为高,下降沿驱动,上升沿采样
        MOV        @DR4,R11
        INC        WR6,#01H
MOV        A,#00H
        MOV        @DR4,R11
        INC        WR6,#02H
        MOV        A,#02H                ;SPI时钟为系统时钟的16分之一(1.5MHZ速率)
        MOV        @DR4,R11

SETB   ES2    ;开串口2中断
SETB EA  ;开总中断
中断程序略



回复

使用道具 举报 送花

3

主题

1998

回帖

844

积分

等待验证会员

积分
844
发表于 4 天前 | 显示全部楼层
关于STC32G12K128串口设置为SPI模式的问题,感谢您的详细描述。根据您提供的信息,我们可以从以下几个方面进行分析和探讨。

首先,STC32G12K128的串口模块具备多种工作模式,包括异步串行通信(UART)和同步串行通信(SPI)。在将串口配置为SPI模式时,需严格按照数据手册中的寄存器配置流程进行操作,以确保功能正确实现。

您提到的四个关键步骤是正确的:

1. SCON寄存器设置:将串口模式设置为同步模式(SM0=1, SM1=0),并开启接收使能位(REN=1),这是进入SPI模式的前提条件。
2. USARTCR1寄存器设置:设置SPMOD和SPIEN为1,以启用SPI模式和SPI功能。
3. USARTCR4寄存器设置:配置SPI时钟频率,确保主从设备之间的时序匹配。
4. 中断配置:确保中断标志位和中断向量地址正确设置,以便在发生发送或接收事件时触发中断服务程序。

然而,在实际使用中,您遇到了主机模式下仅产生TI中断、未产生RI中断的问题,并且TI中断提前于实际发送结束,导致数据发送和接收不准确。

对此,我们建议从以下几个方面进一步排查:

一、SPI模式下的中断机制

在SPI模式下,通常情况下,主机在发送数据的同时也会接收数据,因此理论上应同时触发TI和RI中断。但根据STC32系列芯片的特性,某些型号在SPI模式下可能仅支持单向传输(如仅发送或仅接收),或者中断机制存在一定的限制。

建议查阅STC32G12K128的数据手册,确认该芯片是否支持双向SPI通信,以及其在主机模式下是否支持RI中断的触发。如果该芯片不支持RI中断,那么您需要通过轮询方式读取接收缓冲区,而不是依赖中断。

二、TI中断提前触发的原因

您提到TI中断在发送尚未完成时就触发,这可能是由于以下原因:
时钟同步问题:SPI通信依赖于主设备的时钟信号,若时钟频率设置不当,可能导致TI中断提前触发。
寄存器配置错误:检查USARTCR4中的时钟分频设置是否合理,确保SPI时钟与主设备一致。
硬件延时不足:虽然您使用汇编语言编写代码,但由于SPI通信对时序要求较高,建议在TI中断处理后增加适当的延时,以确保数据完整发送。

三、程序逻辑优化建议

您提到参考了官方例程,但因缺乏实验环境无法验证。建议在代码中加入必要的延时逻辑,例如在TI中断处理后等待一个SPI时钟周期再写入新数据,以避免数据覆盖或丢失。

此外,可考虑使用状态机的方式管理SPI通信过程,确保每一步操作都符合时序要求。

四、可能的芯片缺陷或限制

目前没有公开资料显示STC32G12K128存在此类问题,但不排除个别批次芯片存在异常。建议您尝试更换其他同型号芯片,或联系STC官方技术支持获取更详细的帮助。

综上所述,建议您:

1. 确认SPI模式是否支持双向通信;
2. 检查USARTCR4寄存器的时钟配置;
3. 在TI中断处理中增加适当延时;
4. 考虑使用轮询方式读取接收数据;
5. 如仍存在问题,建议联系STC官方技术支持进一步排查。

希望以上分析对您有所帮助,如有更多技术细节,欢迎继续交流。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:291
  • 最近打卡:2025-09-07 11:36:42
已绑定手机

82

主题

3059

回帖

6541

积分

荣誉版主

无情的代码机器

积分
6541
发表于 3 天前 | 显示全部楼层
楼主麻烦上传个可复现问题的汇编工程~
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:125
  • 最近打卡:2025-09-05 08:29:32
已绑定手机

17

主题

489

回帖

1609

积分

金牌会员

积分
1609
发表于 3 天前 | 显示全部楼层
建议使用这种方式
MOV        @DR4+OFS,R11
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:291
  • 最近打卡:2025-09-07 11:36:42
已绑定手机

82

主题

3059

回帖

6541

积分

荣誉版主

无情的代码机器

积分
6541
发表于 前天 14:57 | 显示全部楼层
简单翻译了下实验箱的C例程,TI处翻转P42测量信号,未复现少一个时钟问题,还是需要楼主的工程:


截图202509061456154697.jpg

  1. ;---------------------------------------------------------------------*/
  2. ; --- STC MCU Limited ------------------------------------------------*/
  3. ; --- STC 1T Series MCU Demo Programme -------------------------------*/
  4. ; --- Mobile: (86)13922805190 ----------------------------------------*/
  5. ; --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
  6. ; --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
  7. ; --- Web: www.STCAI.com ---------------------------------------------*/
  8. ; --- BBS: www.STCAIMCU.com  -----------------------------------------*/
  9. ; --- QQ:  800003751 -------------------------------------------------*/
  10. ; 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序            */
  11. ;---------------------------------------------------------------------*/
  12. ;*************  功能说明    **************
  13. ;本例程基于STC32G为主控芯片的实验箱进行编写测试。
  14. ;使用Keil C251编译器,Memory Model推荐设置XSmall模式,默认定义变量在edata,单时钟存取访问速度快。
  15. ;edata建议保留1K给堆栈使用,空间不够时可将大数组、不常用变量加xdata关键字定义到xdata空间。
  16. ;USART1复用SPI与USART2复用SPI相互通信。
  17. ;通过P6口LED灯指示通信结果,P6=0x5a表示数据传输正确。
  18. ;下载时, 选择时钟 24MHz (用户可自行修改频率).
  19. ;******************************************/
  20. $include (STC32G.inc)
  21. ; 系统工作频率定义
  22. FOSC    EQU    24000000                      ;系统工作频率
  23. ; 位定义
  24. S1SS       BIT   P2.2
  25. S1MOSI     BIT   P2.3
  26. S1MISO     BIT   P2.4
  27. S1SCLK     BIT   P2.5
  28. S2SS       BIT   P2.2
  29. S2MOSI     BIT   P2.3
  30. S2MISO     BIT   P2.4
  31. S2SCLK     BIT   P2.5
  32. ; 中断向量表
  33. ORG 0000H
  34.     LJMP    MAIN                            ;复位向量
  35. ORG 0023H
  36.     LJMP    UART1_ISR                       ;UART1中断向量
  37. ORG 0051H
  38.     LJMP    UART2_ISR                       ;UART2中断向量
  39. ORG 0100H
  40. ; 数据定义
  41. rptr    DATA    20H                         ;读指针
  42. wptr    DATA    21H                         ;写指针
  43. over    BIT     22H.0                         ;传输完成标志
  44. ; 外部数据缓冲区
  45. buffer1 XDATA 0000H
  46. buffer2 XDATA 0100H
  47. ;/*************************************************
  48. ; 函数名: main (主函数)
  49. ; 功能: 主程序入口,实现SPI通信测试
  50. ; 参数: 无
  51. ; 返回: 无
  52. ; 说明: 初始化系统,配置SPI通信,测试数据传输
  53. ;*************************************************/
  54. MAIN:
  55.     ; 系统初始化
  56.     LCALL   sys_init                        ;系统初始化
  57.     LCALL   usart1_spi_init                 ;USART1使能SPI主模式初始化
  58.     LCALL   usart2_spi_init                 ;USART2使能SPI从模式初始化
  59.    
  60.     ; 初始化缓冲区 (for i=0; i<128; i++)
  61.     XRL     WR6, WR6                        ;i = 0
  62. INIT_LOOP:
  63.     MOV     R11, R7                        
  64.     MOV     WR4, WR6
  65.     ADD     WR4, #WORD0 buffer1
  66.     MOV     DPL, R5                         ;设置DPTR
  67.     MOV     DPH, R4
  68.     MOVX    @DPTR, A                        ;buffer1[i] = i
  69.     CLR     A                              
  70.     MOV     WR4, WR6
  71.     ADD     WR4, #WORD0 buffer2
  72.     MOV     DPL, R5                         ;设置DPTR
  73.     MOV     DPH, R4
  74.     MOVX    @DPTR, A                        ;buffer2[i] = 0
  75.     INC     WR6, #01H                       ;i++
  76.     CMP     WR6, #080H
  77.     JSL     INIT_LOOP
  78.         SETB    EA                              ;使能总中断
  79.     ; 执行SPI通信测试
  80.     LCALL   test
  81.     ; 主循环 (while(1))
  82. MAIN_LOOP:
  83.     SJMP    MAIN_LOOP
  84. ;       FUNCTION _m (END)
  85. ;/*************************************************
  86. ; 函数名: uart1_isr (UART1中断服务程序)
  87. ; 功能: 处理UART1中断,发送SPI数据
  88. ; 参数: 无
  89. ; 返回: 无
  90. ; 说明: UART1中断处理函数,实现数据发送
  91. ;*************************************************/
  92. UART1_ISR:
  93.                                                 
  94. PUSH     WR10
  95. PUSH     WR6
  96. PUSH     PSW1
  97. PUSH     DPH              
  98. PUSH     DPL              
  99.                                                 
  100.     JNB      TI,UART1_MAIN_HANDLER
  101. CPL P42                                                
  102. CLR      TI
  103.                                                 
  104. MOV      R7,rptr
  105. CMP      R7,#080H
  106.     JNC      UART1_SEND_DONE
  107.                                                 
  108. MOV      R10,rptr
  109. MOV      R11,R10         
  110. INC      A               
  111. MOV      rptr,R11         
  112. MOVZ     WR6,R10
  113. ADD      WR6,#WORD0 buffer1
  114. MOV      DPL,R7           
  115. MOV      DPH,R6           
  116. MOVX     A,@DPTR         
  117. MOV      SBUF,A           
  118.                                                 
  119.     SJMP     UART1_MAIN_HANDLER
  120. UART1_SEND_DONE:
  121.                                                 
  122. SETB     over
  123.                                                 
  124.                                                 
  125. UART1_MAIN_HANDLER:
  126.                                                 
  127. JNB      RI,UART1_EXIT_HANDLER
  128.                                                 
  129. CLR      RI
  130. CLR     P21                                                
  131. UART1_EXIT_HANDLER:
  132. POP      DPL              
  133. POP      DPH              
  134. POP      PSW1
  135. POP      WR6
  136. POP      WR10
  137. RETI
  138. ;       FUNCTION uart1_isr (END)
  139. ;/*************************************************
  140. ; 函数名: uart2_isr (UART2中断服务程序)
  141. ; 功能: 处理UART2中断,接收SPI数据
  142. ; 参数: 无
  143. ; 返回: 无
  144. ; 说明: UART2中断处理函数,实现数据接收
  145. ;*************************************************/
  146. UART2_ISR:
  147.                                                 
  148. PUSH     WR10
  149. PUSH     WR6
  150. PUSH     PSW1
  151. PUSH     DPH              
  152. PUSH     DPL              
  153.                                                 
  154.     JNB      S2TI,UART2_S2TI_HANDLER
  155.                                                 
  156. CLR      S2TI
  157.                                                 
  158. UART2_S2TI_HANDLER:
  159.                                                 
  160. JNB      S2RI,UART2__EXIT_HANDLER
  161.                                                 
  162. CLR      S2RI
  163.                                                 
  164. MOV      R10,S2BUF
  165. MOV      R7,wptr
  166. MOV      R11,R7           
  167. INC      A               
  168. MOV      wptr,R11         
  169. MOVZ     WR6,R7
  170. ADD      WR6,#WORD0 buffer2
  171. MOV      DPL,R7           
  172. MOV      DPH,R6           
  173. MOV      @DR56,R10        
  174.                                                 
  175. UART2__EXIT_HANDLER:
  176. POP      DPL              
  177. POP      DPH              
  178. POP      PSW1
  179. POP      WR6
  180. POP      WR10
  181. RETI
  182. ;       FUNCTION uart2_isr (END)
  183. ;/*************************************************
  184. ; 函数名: sys_init (系统初始化函数)
  185. ; 功能: 初始化系统时钟、端口模式等系统参数
  186. ; 参数: 无
  187. ; 返回: 无
  188. ; 说明: 设置WTST、EAXFR、CKCON,配置各端口模式
  189. ;*************************************************/
  190. sys_init:
  191.     MOV     WTST, #00H                      ;设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
  192.     SETB    EAXFR                           ;扩展寄存器(XFR)访问使能
  193.     MOV     CKCON, #00H                     ;提高访问XRAM速度
  194.     ; 设置端口模式
  195.     MOV     P0M1, #030H                     ;设置P0.4、P0.5为漏极开路(实验箱加了上拉电阻到3.3V)
  196.     MOV     P0M0, #030H
  197.     MOV     P1M1, #032H                     ;设置P1.1、P1.4、P1.5为漏极开路(实验箱加了上拉电阻到3.3V), P1.1在PWM当DAC电路通过电阻串联到P2.3
  198.     MOV     P1M0, #032H
  199.     MOV     P2M1, #03CH                     ;设置P2.2~P2.5为漏极开路(实验箱加了上拉电阻到3.3V),设置开漏模式需要断开PWM当DAC电路中的R2电阻
  200.     MOV     P2M0, #03CH
  201.     MOV     P3M1, #050H                     ;设置P3.4、P3.6为漏极开路(实验箱加了上拉电阻到3.3V)
  202.     MOV     P3M0, #050H
  203.     MOV     P4M1, #00H                     ;设置P4准双向
  204.     MOV     P4M0, #00H
  205.     MOV     P5M1, #0CH                      ;设置P5.2、P5.3为漏极开路(实验箱加了上拉电阻到3.3V)
  206.     MOV     P5M0, #0CH
  207.     MOV     P6M1, #0FFH                     ;设置为漏极开路(实验箱加了上拉电阻到3.3V)
  208.     MOV     P6M0, #0FFH
  209.     MOV     P7M1, #00H                      ;设置为准双向口
  210.     MOV     P7M0, #00H
  211.     SETB    P20                             ;P2.0置1
  212.     RET
  213. ;       FUNCTION sys_init (END)
  214. ;/*************************************************
  215. ; 函数名: usart1_spi_init (USART1 SPI主模式初始化函数)
  216. ; 功能: 配置USART1为SPI主模式,实现SPI通信
  217. ; 参数: 无
  218. ; 返回: 无
  219. ; 说明:
  220. ;   - 设置SPI引脚映射:P2.2/S1SS, P2.3/S1MOSI, P2.4/S1MISO, P2.5/S1SCLK
  221. ;   - 配置串口模式0,8位数据
  222. ;   - SPI参数配置:
  223. ;     * DORD=0 (MSB先行)
  224. ;     * 主机模式 (Master mode)
  225. ;     * CPOL=0, CPHA=0 (SPI模式0)
  226. ;     * 速度=SYSCLK/16
  227. ;     * 使能SPI功能
  228. ;   - 使能UART1中断
  229. ;*************************************************/
  230. usart1_spi_init:
  231.     ; 设置SPI引脚映射
  232.     SETB    S1SPI_S0                       ;切换S1SPI到P2.2/S1SS,P2.3/S1MOSI,P2.4/S1MISO,P2.5/S1SCLK
  233.     CLR     S1SPI_S1
  234.     ; 配置串口模式
  235.     MOV     SCON, #010H                    ;使能接收,必须设置为串口模式0
  236.     ; 配置SPI参数
  237.     MOV     A, #010H                       ;USARTCR1 = 0x10, 使能USART1的SPI模式
  238.     MOV     WR6, #0FDC0H
  239.     MOV     WR4, #07EH
  240.     MOV     @DR4, R11
  241.     MOV     R11, @DR4                      ;DORD=0 (数据顺序:MSB先行)
  242.     ANL     A, #0BFH
  243.     MOV     @DR4, R11
  244.     MOV     R11, @DR4                      ;主机模式 (Master mode)
  245.     ANL     A, #0FBH
  246.     MOV     @DR4, R11
  247.     MOV     R3, @DR4                       ;CPOL=0, CPHA=0 (SPI模式0)
  248.     MOV     @DR4, R3
  249.     MOV     A, #02H                        ;USARTCR4 = 0x02, SPI速度为SYSCLK/16
  250.     MOV     WR2, #0FDC3H
  251.     MOV     WR0, #07EH
  252.     MOV     @DR0, R11
  253.     MOV     R11, @DR4                      ;使能SPI功能
  254.     ORL     A, #08H
  255.     MOV     @DR4, R11
  256.     ; 使能中断
  257.     SETB    ES                             ;使能UART1中断
  258.                                                 
  259. RET
  260. ;       FUNCTION usart1_spi_init (END)
  261. ;/*************************************************
  262. ; 函数名: usart2_spi_init (USART2 SPI从模式初始化函数)
  263. ; 功能: 配置USART2为SPI从模式,实现SPI通信
  264. ; 参数: 无
  265. ; 返回: 无
  266. ; 说明:
  267. ;   - 设置SPI引脚映射:P2.2/S2SS, P2.3/S2MOSI, P2.4/S2MISO, P2.5/S2SCLK
  268. ;   - 配置串口模式0,8位数据
  269. ;   - SPI参数配置:
  270. ;     * DORD=0 (MSB先行)
  271. ;     * 从机模式 (Slave mode)
  272. ;     * CPOL=0, CPHA=0 (SPI模式0)
  273. ;     * 速度=SYSCLK/16 (由主机控制)
  274. ;     * 使能SPI功能
  275. ;   - 使能UART2中断
  276. ;*************************************************/
  277. usart2_spi_init:
  278.     ; 设置SPI引脚映射
  279.     SETB    S2SPI_S0                       ;切换S2SPI到P2.2/S2SS,P2.3/S2MOSI,P2.4/S2MISO,P2.5/S2SCLK
  280.     CLR     S2SPI_S1
  281.     ; 配置串口模式
  282.     MOV     S2CON, #010H                   ;使能接收,必须设置为串口模式0
  283.     ; 配置SPI参数
  284.     MOV     A, #010H                       ;USART2CR1 = 0x10, 使能USART2的SPI模式
  285.     MOV     WR6, #0FDC8H
  286.     MOV     WR4, #07EH
  287.     MOV     @DR4, R11         
  288.                                                 
  289.     MOV     R11, @DR4                      ;DORD=0 (数据顺序:MSB先行)
  290.     ANL     A, #0BFH
  291.     MOV     @DR4, R11         
  292.                                                 
  293.     MOV     R11, @DR4                      ;从机模式 (Slave mode)
  294.     ORL     A, #04H
  295.     MOV     @DR4, R11         
  296.     MOV     R3, @DR4                       ;CPOL=0, CPHA=0 (SPI模式0)
  297.     MOV     @DR4, R3
  298.     MOV     A, #02H                        ;USART2CR4 = 0x02, SPI速度为SYSCLK/16           
  299.     MOV     WR2, #0FDCBH
  300.     MOV     WR0, #07EH
  301.     MOV     @DR0, R11
  302.     MOV     R11, @DR4                      ;使能SPI功能
  303.     ORL     A, #08H
  304.     MOV     @DR4, R11
  305.     ; 使能中断
  306.     SETB    ES2                            ;使能UART2中断
  307.     RET
  308. ;       FUNCTION usart2_spi_init (END)
  309. ;/*************************************************
  310. ; 函数名: test (SPI通信测试函数)
  311. ; 功能: 执行SPI通信测试,验证数据传输正确性
  312. ; 参数: 无
  313. ; 返回: 无
  314. ; 说明: 发送数据并校验接收,控制LED指示结果
  315. ;*************************************************/
  316. test:
  317.                                                 
  318.                                                 
  319.                                                 
  320.     CLR     A                              
  321.     MOV     wptr, R11                       ;wptr = 0
  322.                                                 
  323.                                                 
  324.     CLR     over                            ;over = 0
  325.                                                 
  326. CLR      S1SS
  327.                                                 
  328. MOV      A,#01H           
  329. MOV      rptr,R11         
  330. MOV      DPTR,#WORD0 buffer1
  331. MOVX     A,@DPTR         
  332. MOV      SBUF,A           
  333.                                                 
  334. TEST_WAIT_LOOP:
  335.     JNB      over,TEST_WAIT_LOOP
  336.                                                 
  337. SETB     S1SS
  338.                                                 
  339. MOV      R10,#05AH
  340. ;---- Variable 'ret' assigned to Register 'R10' ----
  341.                                                 
  342. XRL      R7,R7
  343. ;---- Variable 'i' assigned to Register 'R7' ----
  344. TEST_CHECK_LOOP:
  345.                                                 
  346.     ; 数据校验:比较buffer1[i]和buffer2[i]
  347.     MOVZ    WR4, R7
  348.     ADD     WR4, #WORD0 buffer2
  349.     MOV     DPL, R5                        ;设置DPTR指向buffer2[i]
  350.     MOV     DPH, R4
  351.     MOV     R6, @DR56                      ;读取buffer2[i]
  352.     MOVZ    WR4, R7
  353.     ADD     WR4, #WORD0 buffer1
  354.     MOV     DPL, R5                        ;设置DPTR指向buffer1[i]
  355.     MOV     DPH, R4
  356.     MOVX    A, @DPTR                       ;读取buffer1[i]
  357.     CMP     R11, R6                        ;比较数据
  358. JE       TEST_DATA_MATCH
  359.                                                 
  360. MOV      R10,#0FEH
  361.                                                 
  362. SJMP     TEST_LOOP_END
  363.                                                 
  364. TEST_DATA_MATCH:
  365. INC      R7,#01H
  366. CMP      R7,#080H
  367. JC       TEST_CHECK_LOOP
  368. TEST_LOOP_END:
  369.                                                 
  370.     ; 检查测试结果
  371.     CMP     R10, #05AH                      ;ret == 0x5a?
  372.     JNE     NO_LED                          ;如果不等于,跳过点亮LED
  373.     CLR     P20                             ;点亮LED指示成功
  374. NO_LED:
  375. RET
  376. ;       FUNCTION test (END)
  377. END
复制代码


三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-9-8 02:57 , Processed in 0.141585 second(s), 79 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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