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

📄 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
2776                     	bsct
2777  0000               _table:
2778  0000 c0            	dc.b	192
2779  0001 f9            	dc.b	249
2780  0002 a4            	dc.b	164
2781  0003 b0            	dc.b	176
2782  0004 99            	dc.b	153
2783  0005 92            	dc.b	146
2784  0006 82            	dc.b	130
2785  0007 f8            	dc.b	248
2786  0008 80            	dc.b	128
2787  0009 90            	dc.b	144
2788  000a 88            	dc.b	136
2789  000b 83            	dc.b	131
2790  000c c6            	dc.b	198
2791  000d a1            	dc.b	161
2792  000e 86            	dc.b	134
2793  000f 8e            	dc.b	142
2842                     ; 12 void delay(uint a)  //延时子函数
2842                     ; 13 {
2844                     	switch	.text
2845  0000               _delay:
2847  0000 89            	pushw	x
2848  0001 88            	push	a
2849       00000001      OFST:	set	1
2852                     ; 15 	for(a;a>0;a--)
2855  0002 2011          	jra	L3102
2856  0004               L7002:
2857                     ; 16 	  for(i=0;i<200;i++);
2859  0004 0f01          	clr	(OFST+0,sp)
2860  0006               L7102:
2864  0006 0c01          	inc	(OFST+0,sp)
2867  0008 7b01          	ld	a,(OFST+0,sp)
2868  000a a1c8          	cp	a,#200
2869  000c 25f8          	jrult	L7102
2870                     ; 15 	for(a;a>0;a--)
2872  000e 1e02          	ldw	x,(OFST+1,sp)
2873  0010 1d0001        	subw	x,#1
2874  0013 1f02          	ldw	(OFST+1,sp),x
2875  0015               L3102:
2878  0015 1e02          	ldw	x,(OFST+1,sp)
2879  0017 26eb          	jrne	L7002
2880                     ; 17 }
2883  0019 5b03          	addw	sp,#3
2884  001b 81            	ret
2915                     ; 18 void init(void)     //初始化函数
2915                     ; 19 {
2916                     	switch	.text
2917  001c               _init:
2921                     ; 20 	PB_DDR=0xff;
2923  001c 35ff5007      	mov	_PB_DDR,#255
2924                     ; 21 	PB_CR1=0xff;      //把PB设置为推挽输出
2926  0020 35ff5008      	mov	_PB_CR1,#255
2927                     ; 22 	PB_CR2=0x00;
2929  0024 725f5009      	clr	_PB_CR2
2930                     ; 24 	PC_DDR=0xff;
2932  0028 35ff500c      	mov	_PC_DDR,#255
2933                     ; 25 	PC_CR1=0xff;      //把PC设置为推挽输出
2935  002c 35ff500d      	mov	_PC_CR1,#255
2936                     ; 26 	PC_CR2=0x00;
2938  0030 725f500e      	clr	_PC_CR2
2939                     ; 28 	CLK_SWR=0xe1;      //选内部高速时钟作为主时钟
2941  0034 35e150c4      	mov	_CLK_SWR,#225
2942                     ; 29 	CLK_CKDIVR=0x18;    //时钟分频,这里为2MHz,读者可以参考stm8s系列数据参考手册改变频率,并观察数码管显示的变化
2944  0038 351850c6      	mov	_CLK_CKDIVR,#24
2945                     ; 30 }
2948  003c 81            	ret
3005                     ; 31 void main()
3005                     ; 32 {
3006                     	switch	.text
3007  003d               _main:
3009  003d 5203          	subw	sp,#3
3010       00000003      OFST:	set	3
3013                     ; 34 	 init();
3015  003f addb          	call	_init
3017  0041               L3602:
3018                     ; 37 		for(i=0;i<16;i++)           //有十六个数要显示
3020  0041 0f02          	clr	(OFST-1,sp)
3021  0043               L7602:
3022                     ; 39 			for(j=0;j<62;j++)          //每个数扫描62次
3024  0043 0f01          	clr	(OFST-2,sp)
3025  0045               L5702:
3026                     ; 41 				for(k=0;k<8;k++)         //8个数码管
3028  0045 0f03          	clr	(OFST+0,sp)
3029  0047               L3012:
3030                     ; 43 				  PB_ODR=table[i];      //显示第i个数
3032  0047 7b02          	ld	a,(OFST-1,sp)
3033  0049 5f            	clrw	x
3034  004a 97            	ld	xl,a
3035  004b e600          	ld	a,(_table,x)
3036  004d c75005        	ld	_PB_ODR,a
3037                     ; 44 				  PC_ODR =k*2;          //依次选择第1到第8个数码管
3039  0050 7b03          	ld	a,(OFST+0,sp)
3040  0052 48            	sll	a
3041  0053 c7500a        	ld	_PC_ODR,a
3042                     ; 45 				  delay(2);
3044  0056 ae0002        	ldw	x,#2
3045  0059 ada5          	call	_delay
3047                     ; 41 				for(k=0;k<8;k++)         //8个数码管
3049  005b 0c03          	inc	(OFST+0,sp)
3052  005d 7b03          	ld	a,(OFST+0,sp)
3053  005f a108          	cp	a,#8
3054  0061 25e4          	jrult	L3012
3055                     ; 39 			for(j=0;j<62;j++)          //每个数扫描62次
3057  0063 0c01          	inc	(OFST-2,sp)
3060  0065 7b01          	ld	a,(OFST-2,sp)
3061  0067 a13e          	cp	a,#62
3062  0069 25da          	jrult	L5702
3063                     ; 37 		for(i=0;i<16;i++)           //有十六个数要显示
3065  006b 0c02          	inc	(OFST-1,sp)
3068  006d 7b02          	ld	a,(OFST-1,sp)
3069  006f a110          	cp	a,#16
3070  0071 25d0          	jrult	L7602
3072  0073 20cc          	jra	L3602
3097                     	xdef	_main
3098                     	xdef	_init
3099                     	xdef	_delay
3100                     	xdef	_table
3119                     	end

⌨️ 快捷键说明

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