📄 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
2811 ; 11 void init(void) //初始化函数
2811 ; 12 {
2813 switch .text
2814 0000 _init:
2818 ; 13 CLK_ICKR|=0x08; // 打开芯片内部的低速振荡器LSI
2820 0000 721650c0 bset _CLK_ICKR,#3
2822 0004 L7771:
2823 ; 14 while((CLK_ICKR&0x10)==0); // 等待振荡器稳定
2825 0004 c650c0 ld a,_CLK_ICKR
2826 0007 a510 bcp a,#16
2827 0009 27f9 jreq L7771
2828 ; 16 TIM2_EGR=0X01; //允许产生更新事件
2830 000b 35015304 mov _TIM2_EGR,#1
2831 ; 17 TIM2_PSCR=0X01; //分频,使频率为1MHz
2833 000f 3501530c mov _TIM2_PSCR,#1
2834 ; 19 TIM2_ARRH=0XC3; //更新后计数器的值
2836 0013 35c3530d mov _TIM2_ARRH,#195
2837 ; 20 TIM2_ARRL=0X50;
2839 0017 3550530e mov _TIM2_ARRL,#80
2840 ; 22 TIM2_CR1=0X05; //允许定时器工作
2842 001b 35055300 mov _TIM2_CR1,#5
2843 ; 23 TIM2_IER=0X01; //允许更新中断
2845 001f 35015301 mov _TIM2_IER,#1
2846 ; 24 _asm("rim"); //汇编语句,启动定时器
2849 0023 9a rim
2851 ; 26 }
2854 0024 81 ret
2880 ; 28 void main()
2880 ; 29 {
2881 switch .text
2882 0025 _main:
2886 ; 31 init();
2888 0025 add9 call _init
2890 0027 L3102:
2891 ; 34 BEEP_CSR=0x26; //一秒2KHz
2893 0027 352650f3 mov _BEEP_CSR,#38
2895 002b 2004 jra L3202
2896 002d L7102:
2897 ; 36 BEEP_CSR=0x2e; //一秒1KHz
2899 002d 352e50f3 mov _BEEP_CSR,#46
2900 0031 L3202:
2901 ; 35 while((t>=20)&&(t<40))
2903 0031 b600 ld a,_t
2904 0033 a114 cp a,#20
2905 0035 250c jrult L3302
2907 0037 b600 ld a,_t
2908 0039 a128 cp a,#40
2909 003b 25f0 jrult L7102
2910 003d 2004 jra L3302
2911 003f L1302:
2912 ; 38 BEEP_CSR=0x3e; //一秒500Hz
2914 003f 353e50f3 mov _BEEP_CSR,#62
2915 0043 L3302:
2916 ; 37 while((t>=40)&&(t<60))
2918 0043 b600 ld a,_t
2919 0045 a128 cp a,#40
2920 0047 250c jrult L3402
2922 0049 b600 ld a,_t
2923 004b a13c cp a,#60
2924 004d 25f0 jrult L1302
2925 004f 2004 jra L3402
2926 0051 L1402:
2927 ; 40 BEEP_CSR&=0xdf; //一秒关闭
2929 0051 721b50f3 bres _BEEP_CSR,#5
2930 0055 L3402:
2931 ; 39 while((t>=60)&&(t<80))
2933 0055 b600 ld a,_t
2934 0057 a13c cp a,#60
2935 0059 2506 jrult L7402
2937 005b b600 ld a,_t
2938 005d a150 cp a,#80
2939 005f 25f0 jrult L1402
2940 0061 L7402:
2941 ; 41 if(t>=80)
2943 0061 b600 ld a,_t
2944 0063 a150 cp a,#80
2945 0065 25c0 jrult L3102
2946 ; 42 t=0;
2948 0067 3f00 clr _t
2949 0069 20bc jra L3102
2974 ; 46 @far @interrupt void TIM2_UP_IRQHandler (void) //中断函数
2974 ; 47
2974 ; 48 {
2976 switch .text
2977 006b f_TIM2_UP_IRQHandler:
2981 ; 49 TIM2_SR1 = 0x00;
2983 006b 725f5302 clr _TIM2_SR1
2984 ; 50 t++;
2986 006f 3c00 inc _t
2987 ; 51 }
2990 0071 80 iret
3013 xdef f_TIM2_UP_IRQHandler
3014 xdef _main
3015 xdef _init
3016 switch .ubsct
3017 0000 _t:
3018 0000 00 ds.b 1
3019 xdef _t
3039 end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -