📄 main.ls
字号:
1 ; C Compiler for STM8 (COSMIC Software)
2 ; Parser V4.9.10 - 10 Feb 2011
3 ; Generator (Limited) V4.3.6 - 15 Feb 2011
2776 bsct
2777 0000 _table:
2778 0000 fe dc.b 254
2779 0001 fd dc.b 253
2780 0002 fb dc.b 251
2781 0003 f7 dc.b 247
2782 0004 ef dc.b 239
2783 0005 df dc.b 223
2784 0006 bf dc.b 191
2785 0007 7f dc.b 127
2834 ; 12 void DelayMS(uint s) //延时子函数,约延时1ms
2834 ; 13 {
2836 switch .text
2837 0000 _DelayMS:
2839 0000 89 pushw x
2840 0001 89 pushw x
2841 00000002 OFST: set 2
2844 ; 15 for(s;s>0;s--)
2847 0002 2018 jra L3102
2848 0004 L7002:
2849 ; 16 for(i=0;i<500;i++);
2851 0004 5f clrw x
2852 0005 1f01 ldw (OFST-1,sp),x
2853 0007 L7102:
2857 0007 1e01 ldw x,(OFST-1,sp)
2858 0009 1c0001 addw x,#1
2859 000c 1f01 ldw (OFST-1,sp),x
2862 000e 1e01 ldw x,(OFST-1,sp)
2863 0010 a301f4 cpw x,#500
2864 0013 25f2 jrult L7102
2865 ; 15 for(s;s>0;s--)
2867 0015 1e03 ldw x,(OFST+1,sp)
2868 0017 1d0001 subw x,#1
2869 001a 1f03 ldw (OFST+1,sp),x
2870 001c L3102:
2873 001c 1e03 ldw x,(OFST+1,sp)
2874 001e 26e4 jrne L7002
2875 ; 17 }
2878 0020 5b04 addw sp,#4
2879 0022 81 ret
2907 ; 19 void init(void) //stm8初始化函数
2907 ; 20 {
2908 switch .text
2909 0023 _init:
2913 ; 21 PB_DDR = 0xff;
2915 0023 35ff5007 mov _PB_DDR,#255
2916 ; 22 PB_CR1 = 0xff; // 将PB设置成推挽输出
2918 0027 35ff5008 mov _PB_CR1,#255
2919 ; 23 PB_CR2 = 0x00;
2921 002b 725f5009 clr _PB_CR2
2922 ; 25 CLK_SWR = 0xE1; //选内部高速时钟作为主时钟
2924 002f 35e150c4 mov _CLK_SWR,#225
2925 ; 26 CLK_CKDIVR = 0x08; //将CPU主频设置为2M(STM8默认的就是内部高速时钟的八分频,即2MH,这里只是告诉大家设置方法)
2927 0033 350850c6 mov _CLK_CKDIVR,#8
2928 ; 27 }
2931 0037 81 ret
2969 ; 29 void main()
2969 ; 30 {
2970 switch .text
2971 0038 _main:
2973 0038 88 push a
2974 00000001 OFST: set 1
2977 ; 32 init();
2979 0039 ade8 call _init
2981 003b L3502:
2982 ; 35 PB_ODR = 0xff; //先将所有的LED关闭
2984 003b 35ff5005 mov _PB_ODR,#255
2985 ; 36 for(i=0;i<9;i++) //一开始是所有的LED熄灭,再逐点亮所有LED,共九种状态
2987 003f 0f01 clr (OFST+0,sp)
2988 0041 L7502:
2989 ; 38 DelayMS(500); //延时500毫秒
2991 0041 ae01f4 ldw x,#500
2992 0044 adba call _DelayMS
2994 ; 39 PB_ODR<<=1; //将PB_ODR向左移动一位,逐渐点亮所有LED
2996 0046 72585005 sll _PB_ODR
2997 ; 36 for(i=0;i<9;i++) //一开始是所有的LED熄灭,再逐点亮所有LED,共九种状态
2999 004a 0c01 inc (OFST+0,sp)
3002 004c 7b01 ld a,(OFST+0,sp)
3003 004e a109 cp a,#9
3004 0050 25ef jrult L7502
3005 ; 42 for(i=0;i<8;i++)
3007 0052 0f01 clr (OFST+0,sp)
3008 0054 L5602:
3009 ; 44 PB_ODR=table[i]; //将table中的数依次赋给PB_ODR ,从上至下依次点亮LED
3011 0054 7b01 ld a,(OFST+0,sp)
3012 0056 5f clrw x
3013 0057 97 ld xl,a
3014 0058 e600 ld a,(_table,x)
3015 005a c75005 ld _PB_ODR,a
3016 ; 45 DelayMS(500);
3018 005d ae01f4 ldw x,#500
3019 0060 ad9e call _DelayMS
3021 ; 42 for(i=0;i<8;i++)
3023 0062 0c01 inc (OFST+0,sp)
3026 0064 7b01 ld a,(OFST+0,sp)
3027 0066 a108 cp a,#8
3028 0068 25ea jrult L5602
3030 006a 20cf jra L3502
3055 xdef _main
3056 xdef _init
3057 xdef _DelayMS
3058 xdef _table
3077 end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -