打印
[STM8]

开始学ASM:IARSTM8汇编第一个程序

[复制链接]
3885|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
STM32W108|  楼主 | 2011-1-23 18:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 STM32W108 于 2011-1-23 19:13 编辑

开始学ASM,IARSTM8第一个汇编程序,LED闪烁。

IARSTM8新建ASM工程,模板里的启动代码是错误的,需要自己写向量表。
使用与IARSTM8 C语言相同的虚拟寄存器。函数调用寄存器传递规则也参照IAR STM8 C。
(这样汇编,C能够混用,C能调用汇编,汇编也能调用C)
手上没示波器,延时函数延时不准。

#include "proj_incs.h"
//IAR STM8寄存器使用规则:
//A,X,Y,?b0-?b7 草稿寄存器
//?b8-?b15      存储寄存器


        PUBLIC  main
        SECTION `.near_func.text`:CODE:NOROOT(0)
main:
        CLR       A        
        LD        CLK_CKDIVR, A    // 主时钟 = 16MHZ
        
        LD        A, #0x01         //PD0设置成推挽输出
        LD        PD_DDR, A           
        LD        PD_CR1, A                     
        CLR       A
        LD        PD_CR2, A
            
main_loop:
        BRES      PD_ODR, #0x0     //PD0输出0
        LDW       X, #1000         //延时
        CALL      delay_ms
        BSET      PD_ODR, #0x0     //PD0输出1

        LDW       X, #1000         //延时
        CALL      delay_ms
        
        JRA       main_loop      
      
        SECTION `.near_func.text`:CODE:REORDER:NOROOT(2)
        CODE
delay_ms:
        TNZW      X
        JRNE      __delay_ms_2
__delay_ms_0:
        RET
__delay_ms_1:
        TNZW      X
        JREQ      __delay_ms_0
__delay_ms_2:
        DECW      X
        LDW       Y, #0x3d4
__delay_ms_3:
        DECW      Y
        TNZW      Y
        JREQ      __delay_ms_1
        JRA       __delay_ms_3
              
        END

stm8_asm.zip

62.62 KB

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://www.rf-module-china.com stm32w108@126.com  深圳华奥通公司招聘开单片机射频开发工程师 https://bbs.21ic.com/icview-210623-1-1.html

0

主题

89

帖子

1

粉丝