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

📄 file2.rst

📁 单片机学习系统附的实验源代码
💻 RST
📖 第 1 页 / 共 2 页
字号:
                            221 ;--------------------------------------------------------
                            222 ; Home
                            223 ;--------------------------------------------------------
                            224 	.area HOME    (CODE)
                            225 	.area CSEG    (CODE)
                            226 ;--------------------------------------------------------
                            227 ; code
                            228 ;--------------------------------------------------------
                            229 	.area CSEG    (CODE)
   002C                     230 __sdcc_program_startup:
   002C 12 00 31            231 	lcall	_main
                            232 ;	return from main will lock up
   002F 80 FE               233 	sjmp .
                            234 ;------------------------------------------------------------
                            235 ;Allocation info for local variables in function 'main'
                            236 ;------------------------------------------------------------
                            237 ;k                         Allocated to registers 
                            238 ;------------------------------------------------------------
                            239 ;C:/hj51avr/code/c/file2.c:12: void main()
                            240 ;	-----------------------------------------
                            241 ;	 function main
                            242 ;	-----------------------------------------
   0031                     243 _main:
                    0002    244 	ar2 = 0x02
                    0003    245 	ar3 = 0x03
                    0004    246 	ar4 = 0x04
                    0005    247 	ar5 = 0x05
                    0006    248 	ar6 = 0x06
                    0007    249 	ar7 = 0x07
                    0000    250 	ar0 = 0x00
                    0001    251 	ar1 = 0x01
                            252 ;C:/hj51avr/code/c/file2.c:15: P0 = 0;            //关闭数码显示
                            253 ;     genAssign
   0031 75 80 00            254 	mov	_P0,#0x00
                            255 ;C:/hj51avr/code/c/file2.c:16: P2 = 0;            //
                            256 ;     genAssign
   0034 75 A0 00            257 	mov	_P2,#0x00
                            258 ;C:/hj51avr/code/c/file2.c:17: P3_7 = 0;          //关闭蜂鸣器
                            259 ;     genAssign
   0037 C2 B7               260 	clr	_P3_7
                            261 ;C:/hj51avr/code/c/file2.c:19: while(1)             //设置一个无限制循环
   0039                     262 00102$:
                            263 ;C:/hj51avr/code/c/file2.c:20: {  P1 = 254;          //从第一个灯开始显示
                            264 ;     genAssign
   0039 75 90 FE            265 	mov	_P1,#0xFE
                            266 ;C:/hj51avr/code/c/file2.c:21: for(k=0;k<8;k++)
                            267 ;     genAssign
   003C 7A 00               268 	mov	r2,#0x00
   003E 7B 00               269 	mov	r3,#0x00
   0040                     270 00104$:
                            271 ;     genCmpLt
                            272 ;     genCmp
   0040 C3                  273 	clr	c
   0041 EA                  274 	mov	a,r2
   0042 94 08               275 	subb	a,#0x08
   0044 EB                  276 	mov	a,r3
   0045 64 80               277 	xrl	a,#0x80
   0047 94 80               278 	subb	a,#0x80
                            279 ;     genIfxJump
                            280 ;       Peephole 108    removed ljmp by inverse jump logic
   0049 50 1B               281 	jnc     00118$
   004B                     282 00119$:
                            283 ;C:/hj51avr/code/c/file2.c:22: {delay(255);       //左移采用c代码写的延时子程序,(速度比较慢)
                            284 ;     genCall
   004B 75 82 FF            285 	mov	dpl,#0xFF
   004E C0 02               286 	push	ar2
   0050 C0 03               287 	push	ar3
   0052 12 00 8E            288 	lcall	_delay
   0055 D0 03               289 	pop	ar3
   0057 D0 02               290 	pop	ar2
                            291 ;C:/hj51avr/code/c/file2.c:23: P1 <<= 1;        //表示,p1每次向左一位
                            292 ;     genLeftShift
                            293 ;     genLeftShiftLiteral
                            294 ;     genlshOne
   0059 E5 90               295 	mov	a,_P1
   005B 25 E0               296 	add	a,acc
   005D F5 90               297 	mov	_P1,a
                            298 ;C:/hj51avr/code/c/file2.c:21: for(k=0;k<8;k++)
                            299 ;     genPlus
                            300 ;     genPlusIncr
                            301 ;	tail increment optimized
   005F 0A                  302 	inc	r2
   0060 BA 00 DD            303 	cjne	r2,#0x00,00104$
   0063 0B                  304 	inc	r3
                            305 ;C:/hj51avr/code/c/file2.c:25: for(k=0;k<8;k++)   //第二次重复
                            306 ;       Peephole 112.b  changed ljmp to sjmp
   0064 80 DA               307 	sjmp    00104$
   0066                     308 00118$:
                            309 ;     genAssign
   0066 7A 00               310 	mov	r2,#0x00
   0068 7B 00               311 	mov	r3,#0x00
   006A                     312 00108$:
                            313 ;     genCmpLt
                            314 ;     genCmp
   006A C3                  315 	clr	c
   006B EA                  316 	mov	a,r2
   006C 94 08               317 	subb	a,#0x08
   006E EB                  318 	mov	a,r3
   006F 64 80               319 	xrl	a,#0x80
   0071 94 80               320 	subb	a,#0x80
                            321 ;     genIfxJump
                            322 ;       Peephole 108    removed ljmp by inverse jump logic
   0073 50 C4               323 	jnc     00102$
   0075                     324 00120$:
                            325 ;C:/hj51avr/code/c/file2.c:26: {delayf();         //右移采用汇编写的代码,(速度比较快)
                            326 ;     genCall
   0075 C0 02               327 	push	ar2
   0077 C0 03               328 	push	ar3
   0079 12 00 B8            329 	lcall	_delayf
   007C D0 03               330 	pop	ar3
   007E D0 02               331 	pop	ar2
                            332 ;C:/hj51avr/code/c/file2.c:27: P1 >>= 1;        //表示,p1每次向右一位
                            333 ;     genRightShift
                            334 ;     genRightShiftLiteral
                            335 ;     genrshOne
   0080 E5 90               336 	mov	a,_P1
   0082 C3                  337 	clr	c
   0083 13                  338 	rrc	a
   0084 F5 90               339 	mov	_P1,a
                            340 ;C:/hj51avr/code/c/file2.c:25: for(k=0;k<8;k++)   //第二次重复
                            341 ;     genPlus
                            342 ;     genPlusIncr
                            343 ;	tail increment optimized
   0086 0A                  344 	inc	r2
   0087 BA 00 E0            345 	cjne	r2,#0x00,00108$
   008A 0B                  346 	inc	r3
                            347 ;       Peephole 112.b  changed ljmp to sjmp
   008B 80 DD               348 	sjmp    00108$
   008D                     349 00112$:
   008D 22                  350 	ret
                            351 ;------------------------------------------------------------
                            352 ;Allocation info for local variables in function 'delay'
                            353 ;------------------------------------------------------------
                            354 ;times                     Allocated to registers r2 
                            355 ;t                         Allocated to registers r3 r4 
                            356 ;i                         Allocated to registers 
                            357 ;------------------------------------------------------------
                            358 ;C:/hj51avr/code/c/file2.c:34: void delay(unsigned char times)
                            359 ;	-----------------------------------------
                            360 ;	 function delay
                            361 ;	-----------------------------------------
   008E                     362 _delay:
                            363 ;     genReceive
   008E AA 82               364 	mov	r2,dpl
                            365 ;C:/hj51avr/code/c/file2.c:36: int t=20000;           //延时倍数
                            366 ;     genAssign
   0090 7B 20               367 	mov	r3,#0x20
   0092 7C 4E               368 	mov	r4,#0x4E
                            369 ;C:/hj51avr/code/c/file2.c:37: unsigned char i=times;   
                            370 ;     genAssign
   0094                     371 00105$:
                            372 ;C:/hj51avr/code/c/file2.c:38: for(;i!=0;i--)
                            373 ;     genCmpEq
   0094 BA 00 02            374 	cjne	r2,#0x00,00114$
                            375 ;       Peephole 112.b  changed ljmp to sjmp
   0097 80 1E               376 	sjmp    00109$
   0099                     377 00114$:
                            378 ;     genAssign
   0099 8B 05               379 	mov	ar5,r3
   009B 8C 06               380 	mov	ar6,r4
   009D                     381 00101$:
                            382 ;C:/hj51avr/code/c/file2.c:39: {for(;t!=0;t--){}}
                            383 ;     genCmpEq
                            384 ;       Peephole 241.b  optimized compare
   009D E4                  385 	clr     a
   009E BD 00 04            386 	cjne    r5,#0x00,00115$
   00A1 BE 00 01            387 	cjne    r6,#0x00,00115$
   00A4 04                  388 	inc     a
   00A5                     389 00115$:
   00A5                     390 00116$:
   00A5 FF                  391 	mov	r7,a
                            392 ;     genAssign
   00A6 8D 03               393 	mov	ar3,r5
   00A8 8E 04               394 	mov	ar4,r6
                            395 ;     genIfx
   00AA EF                  396 	mov	a,r7
                            397 ;     genIfxJump
                            398 ;       Peephole 109    removed ljmp by inverse jump logic
   00AB 70 07               399 	jnz     00107$
   00AD                     400 00117$:
                            401 ;     genMinus
                            402 ;     genMinusDec
                            403 ;	tail decrement optimized
   00AD 1D                  404 	dec	r5
   00AE BD FF EC            405 	cjne	r5,#0xff,00101$
   00B1 1E                  406 	dec	r6
                            407 ;       Peephole 112.b  changed ljmp to sjmp
   00B2 80 E9               408 	sjmp    00101$
   00B4                     409 00107$:
                            410 ;C:/hj51avr/code/c/file2.c:38: for(;i!=0;i--)
                            411 ;     genMinus
                            412 ;     genMinusDec
   00B4 1A                  413 	dec	r2
                            414 ;       Peephole 112.b  changed ljmp to sjmp
   00B5 80 DD               415 	sjmp    00105$
   00B7                     416 00109$:
   00B7 22                  417 	ret
                            418 ;------------------------------------------------------------
                            419 ;Allocation info for local variables in function 'delayf'
                            420 ;------------------------------------------------------------
                            421 ;------------------------------------------------------------
                            422 ;C:/hj51avr/code/c/file2.c:44: void delayf()
                            423 ;	-----------------------------------------
                            424 ;	 function delayf
                            425 ;	-----------------------------------------
   00B8                     426 _delayf:
                            427 ;C:/hj51avr/code/c/file2.c:51: _endasm;            //总延时 T = R1*R2 机器周期
                            428 ;     genInline
   00B8 79 00               429 	      mov R1,#0
   00BA                     430   lp:
   00BA 78 80               431 	mov R0,#128
   00BC                     432   lk:
   00BC D8 FE               433 	djnz R0,lk
   00BE D9 FA               434 	      djnz R1,lp
   00C0                     435 00101$:
   00C0 22                  436 	ret
                            437 	.area CSEG    (CODE)
                            438 	.area XINIT   (CODE)

⌨️ 快捷键说明

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