⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.ls

📁 STM8S105S4程序
💻 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
2786                     	bsct
2787  0000               _table:
2788  0000 ff            	dc.b	255
2789  0001 83            	dc.b	131
2790  0002 ef            	dc.b	239
2791  0003 ef            	dc.b	239
2792  0004 ef            	dc.b	239
2793  0005 ef            	dc.b	239
2794  0006 83            	dc.b	131
2795  0007 ff            	dc.b	255
2796  0008 ff            	dc.b	255
2797  0009 83            	dc.b	131
2798  000a ef            	dc.b	239
2799  000b ef            	dc.b	239
2800  000c ef            	dc.b	239
2801  000d ef            	dc.b	239
2802  000e 83            	dc.b	131
2803  000f ff            	dc.b	255
2804  0010 ff            	dc.b	255
2805  0011 83            	dc.b	131
2806  0012 ef            	dc.b	239
2807  0013 ef            	dc.b	239
2808  0014 ef            	dc.b	239
2809  0015 ef            	dc.b	239
2810  0016 83            	dc.b	131
2811  0017 ff            	dc.b	255
2812  0018 ff            	dc.b	255
2813  0019 ff            	dc.b	255
2814  001a ef            	dc.b	239
2815  001b ff            	dc.b	255
2816  001c ff            	dc.b	255
2817  001d ff            	dc.b	255
2818  001e ff            	dc.b	255
2819  001f ff            	dc.b	255
2820  0020 ff            	dc.b	255
2821  0021 93            	dc.b	147
2822  0022 ef            	dc.b	239
2823  0023 ff            	dc.b	255
2824  0024 ff            	dc.b	255
2825  0025 ff            	dc.b	255
2826  0026 ff            	dc.b	255
2827  0027 ff            	dc.b	255
2828  0028 ff            	dc.b	255
2829  0029 93            	dc.b	147
2830  002a 6d            	dc.b	109
2831  002b ff            	dc.b	255
2832  002c ff            	dc.b	255
2833  002d ff            	dc.b	255
2834  002e ff            	dc.b	255
2835  002f ff            	dc.b	255
2836  0030 ff            	dc.b	255
2837  0031 93            	dc.b	147
2838  0032 6d            	dc.b	109
2839  0033 7d            	dc.b	125
2840  0034 ff            	dc.b	255
2841  0035 ff            	dc.b	255
2842  0036 ff            	dc.b	255
2843  0037 ff            	dc.b	255
2844  0038 ff            	dc.b	255
2845  0039 93            	dc.b	147
2846  003a 6d            	dc.b	109
2847  003b 7d            	dc.b	125
2848  003c bb            	dc.b	187
2849  003d ff            	dc.b	255
2850  003e ff            	dc.b	255
2851  003f ff            	dc.b	255
2852  0040 ff            	dc.b	255
2853  0041 93            	dc.b	147
2854  0042 6d            	dc.b	109
2855  0043 7d            	dc.b	125
2856  0044 bb            	dc.b	187
2857  0045 d7            	dc.b	215
2858  0046 ff            	dc.b	255
2859  0047 ff            	dc.b	255
2860  0048 ff            	dc.b	255
2861  0049 93            	dc.b	147
2862  004a 6d            	dc.b	109
2863  004b 7d            	dc.b	125
2864  004c bb            	dc.b	187
2865  004d d7            	dc.b	215
2866  004e ef            	dc.b	239
2867  004f ff            	dc.b	255
2868  0050 ff            	dc.b	255
2869  0051 93            	dc.b	147
2870  0052 6d            	dc.b	109
2871  0053 7d            	dc.b	125
2872  0054 bb            	dc.b	187
2873  0055 d7            	dc.b	215
2874  0056 ef            	dc.b	239
2875  0057 ff            	dc.b	255
2876  0058 ff            	dc.b	255
2877  0059 bb            	dc.b	187
2878  005a bb            	dc.b	187
2879  005b bb            	dc.b	187
2880  005c bb            	dc.b	187
2881  005d bb            	dc.b	187
2882  005e c7            	dc.b	199
2883  005f ff            	dc.b	255
2884  0060 ff            	dc.b	255
2885  0061 bb            	dc.b	187
2886  0062 bb            	dc.b	187
2887  0063 bb            	dc.b	187
2888  0064 bb            	dc.b	187
2889  0065 bb            	dc.b	187
2890  0066 c7            	dc.b	199
2891  0067 ff            	dc.b	255
2892  0068 ff            	dc.b	255
2893  0069 bb            	dc.b	187
2894  006a bb            	dc.b	187
2895  006b bb            	dc.b	187
2896  006c bb            	dc.b	187
2897  006d bb            	dc.b	187
2898  006e c7            	dc.b	199
2899  006f ff            	dc.b	255
2950                     ; 35 void delay(uint s)
2950                     ; 36 {
2952                     	switch	.text
2953  0000               _delay:
2955  0000 89            	pushw	x
2956  0001 88            	push	a
2957       00000001      OFST:	set	1
2960                     ; 38     for(s;s>0;s--)
2963  0002 2011          	jra	L3102
2964  0004               L7002:
2965                     ; 39       for(i=0;i<200;i++);
2967  0004 0f01          	clr	(OFST+0,sp)
2968  0006               L7102:
2972  0006 0c01          	inc	(OFST+0,sp)
2975  0008 7b01          	ld	a,(OFST+0,sp)
2976  000a a1c8          	cp	a,#200
2977  000c 25f8          	jrult	L7102
2978                     ; 38     for(s;s>0;s--)
2980  000e 1e02          	ldw	x,(OFST+1,sp)
2981  0010 1d0001        	subw	x,#1
2982  0013 1f02          	ldw	(OFST+1,sp),x
2983  0015               L3102:
2986  0015 1e02          	ldw	x,(OFST+1,sp)
2987  0017 26eb          	jrne	L7002
2988                     ; 40 }
2991  0019 5b03          	addw	sp,#3
2992  001b 81            	ret
3024                     ; 42 void init(void)    //初始化函数,PC是用来控制138以驱动点阵的行
3024                     ; 43 {
3025                     	switch	.text
3026  001c               _init:
3030                     ; 44         PG_DDR=0x01;
3032  001c 35015020      	mov	_PG_DDR,#1
3033                     ; 45         PG_CR1=0x01;
3035  0020 35015021      	mov	_PG_CR1,#1
3036                     ; 46         PG_CR2=0x00;
3038  0024 725f5022      	clr	_PG_CR2
3039                     ; 48         PD_DDR=0x70;
3041  0028 35705011      	mov	_PD_DDR,#112
3042                     ; 49         PD_CR1=0x70;
3044  002c 35705012      	mov	_PD_CR1,#112
3045                     ; 50         PD_CR2=0x00;
3047  0030 725f5013      	clr	_PD_CR2
3048                     ; 52         PC_DDR=0x0f;
3050  0034 350f500c      	mov	_PC_DDR,#15
3051                     ; 53         PC_CR1=0x0f;   
3053  0038 350f500d      	mov	_PC_CR1,#15
3054                     ; 54         PC_CR2=0x00;	 
3056  003c 725f500e      	clr	_PC_CR2
3057                     ; 55 }
3060  0040 81            	ret
3119                     ; 56 void display(void)      //显示子函数
3119                     ; 57 {
3120                     	switch	.text
3121  0041               _display:
3123  0041 5203          	subw	sp,#3
3124       00000003      OFST:	set	3
3127                     ; 59 	 E=1;							 //先关闭595(赋值时会影响显示效果)
3129  0043 7210501e      	bset	_E
3130                     ; 60     m=table[a][b];      //将要显示的table[a][b]赋值给m
3132  0047 b601          	ld	a,_a
3133  0049 97            	ld	xl,a
3134  004a a608          	ld	a,#8
3135  004c 42            	mul	x,a
3136  004d 01            	rrwa	x,a
3137  004e bb00          	add	a,_b
3138  0050 2401          	jrnc	L21
3139  0052 5c            	incw	x
3140  0053               L21:
3141  0053 02            	rlwa	x,a
3142  0054 e600          	ld	a,(_table,x)
3143  0056 6b03          	ld	(OFST+0,sp),a
3144                     ; 61     for(q=0;q<8;q++)
3146  0058 0f01          	clr	(OFST-2,sp)
3147  005a               L3602:
3148                     ; 63         p=0;
3150  005a 0f02          	clr	(OFST-1,sp)
3151                     ; 64         if((m&0x80)==0x80)
3153  005c 7b03          	ld	a,(OFST+0,sp)
3154  005e a480          	and	a,#128
3155  0060 a180          	cp	a,#128
3156  0062 2604          	jrne	L1702
3157                     ; 65         p=1;                   //这三句的意思是如果m的最高位是1,则p=1,否则为0,就是把m最高位赋值给p
3159  0064 a601          	ld	a,#1
3160  0066 6b02          	ld	(OFST-1,sp),a
3161  0068               L1702:
3162                     ; 66 				SER=p;               //把p输入595输入口
3164  0068 0d02          	tnz	(OFST-1,sp)
3165  006a 2602          	jrne	L02
3166  006c 2006          	jp	L41
3167  006e               L02:
3168  006e 721c500f      	bset	_SER
3169  0072 2004          	jra	L61
3170  0074               L41:
3171  0074 721d500f      	bres	_SER
3172  0078               L61:
3173                     ; 67         SRCLK=0;
3175  0078 721b500f      	bres	_SRCLK
3176                     ; 68             	RCLK=1;
3178  007c 7218500f      	bset	_RCLK
3179                     ; 70         SRCLK=1;
3182  0080 721a500f      	bset	_SRCLK
3183                     ; 71 				RCLK=0;              //以上语句涉及 595的操作时序, 请参考595芯片资料
3185  0084 7219500f      	bres	_RCLK
3186                     ; 72         m=(m<<1);       
3188  0088 0803          	sll	(OFST+0,sp)
3189                     ; 61     for(q=0;q<8;q++)
3191  008a 0c01          	inc	(OFST-2,sp)
3194  008c 7b01          	ld	a,(OFST-2,sp)
3195  008e a108          	cp	a,#8
3196  0090 25c8          	jrult	L3602
3197                     ; 74 	 E=0;							  //赋值完后打开595		
3199  0092 7211501e      	bres	_E
3200                     ; 75 }
3203  0096 5b03          	addw	sp,#3
3204  0098 81            	ret
3244                     ; 77 void main()
3244                     ; 78 {   
3245                     	switch	.text
3246  0099               _main:
3248  0099 89            	pushw	x
3249       00000002      OFST:	set	2
3252                     ; 80     init();
3254  009a ad80          	call	_init
3256  009c               L1112:
3257                     ; 83         for(a=0;a<14;a++)        //有14个数组要传送
3259  009c 3f01          	clr	_a
3260  009e               L5112:
3261                     ; 85 					for(i=0;i<10;i++)       //每个数组扫描10次,这样才 能看清楚
3263  009e 5f            	clrw	x
3264  009f 1f01          	ldw	(OFST-1,sp),x
3265  00a1               L3212:
3266                     ; 87 							for(b=0;b<8;b++)     //每个数组有8个数
3268  00a1 3f00          	clr	_b
3269  00a3               L1312:
3270                     ; 89 									display();
3272  00a3 ad9c          	call	_display
3274                     ; 90 									PC_ODR=b*2;    //让138和595同步
3276  00a5 b600          	ld	a,_b
3277  00a7 48            	sll	a
3278  00a8 c7500a        	ld	_PC_ODR,a
3279                     ; 91 									delay(2);        //延时一会,以使显示清楚, 延时不能太长,太长会看到闪烁,也不能太短,太短显示不清楚
3281  00ab ae0002        	ldw	x,#2
3282  00ae cd0000        	call	_delay
3284                     ; 87 							for(b=0;b<8;b++)     //每个数组有8个数
3286  00b1 3c00          	inc	_b
3289  00b3 b600          	ld	a,_b
3290  00b5 a108          	cp	a,#8
3291  00b7 25ea          	jrult	L1312
3292                     ; 85 					for(i=0;i<10;i++)       //每个数组扫描10次,这样才 能看清楚
3294  00b9 1e01          	ldw	x,(OFST-1,sp)
3295  00bb 1c0001        	addw	x,#1
3296  00be 1f01          	ldw	(OFST-1,sp),x
3299  00c0 1e01          	ldw	x,(OFST-1,sp)
3300  00c2 a3000a        	cpw	x,#10
3301  00c5 25da          	jrult	L3212
3302                     ; 83         for(a=0;a<14;a++)        //有14个数组要传送
3304  00c7 3c01          	inc	_a
3307  00c9 b601          	ld	a,_a
3308  00cb a10e          	cp	a,#14
3309  00cd 25cf          	jrult	L5112
3310                     ; 95             delay(1000);              //为了使得看起来是I LOVE U是一个周期,这里循环一次后,延时1秒
3312  00cf ae03e8        	ldw	x,#1000
3313  00d2 cd0000        	call	_delay
3316  00d5 20c5          	jra	L1112
3400                     	xdef	_main
3401                     	xdef	_display
3402                     	xdef	_init
3403                     	xdef	_delay
3404                     	xdef	_table
3405                     	switch	.ubsct
3406  0000               _b:
3407  0000 00            	ds.b	1
3408                     	xdef	_b
3409  0001               _a:
3410  0001 00            	ds.b	1
3411                     	xdef	_a
3431                     	end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -