📄 6.lis
字号:
.module _6.c
.area text(rom, con, rel)
0000 .dbfile D:\xij\demo\demo_diy02-8a\1\C语言\02-8A-6\6.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 4
0000 ; #include "iom48v.h"
0000 ;
0000 ; void port_init()
0000 ; {
0000 .dbline 5
0000 ; PORTD=0XFF;DDRD=0XFB;//设置PD2输入,其它输出
0000 8FEF ldi R24,255
0002 8BB9 out 0xb,R24
0004 .dbline 5
0004 8BEF ldi R24,251
0006 8AB9 out 0xa,R24
0008 .dbline -2
0008 L1:
0008 .dbline 0 ; func end
0008 0895 ret
000A .dbend
000A .dbfunc e delay_us _delay_us fV
000A ; time -> R16,R17
.even
000A _delay_us::
000A .dbline -1
000A .dbline 9
000A ; }
000A ;
000A ; void delay_us(int time)
000A ; { //微秒延时
000A L3:
000A .dbline 11
000A ; do
000A ; {
000A .dbline 12
000A ; time--;
000A 0150 subi R16,1
000C 1040 sbci R17,0
000E .dbline 13
000E ; }
000E L4:
000E .dbline 14
000E ; while (time>1);
000E 81E0 ldi R24,1
0010 90E0 ldi R25,0
0012 8017 cp R24,R16
0014 9107 cpc R25,R17
0016 CCF3 brlt L3
0018 .dbline -2
0018 L2:
0018 .dbline 0 ; func end
0018 0895 ret
001A .dbsym r time 16 I
001A .dbend
001A .dbfunc e delay_ms _delay_ms fV
001A ; time -> R20,R21
.even
001A _delay_ms::
001A 00D0 rcall push_gset1
001C A801 movw R20,R16
001E .dbline -1
001E .dbline 18
001E ; }
001E ;
001E ; void delay_ms(unsigned int time)
001E ; { //毫秒延时
001E 05C0 rjmp L8
0020 L7:
0020 .dbline 20
0020 .dbline 21
0020 08EE ldi R16,1000
0022 13E0 ldi R17,3
0024 F2DF rcall _delay_us
0026 .dbline 22
0026 4150 subi R20,1
0028 5040 sbci R21,0
002A .dbline 23
002A L8:
002A .dbline 19
002A ; while(time!=0)
002A 4030 cpi R20,0
002C 4507 cpc R20,R21
002E C1F7 brne L7
0030 X0:
0030 .dbline -2
0030 L6:
0030 00D0 rcall pop_gset1
0032 .dbline 0 ; func end
0032 0895 ret
0034 .dbsym r time 20 i
0034 .dbend
0034 .dbfunc e main _main fV
0034 ; i -> R20
.even
0034 _main::
0034 .dbline -1
0034 .dbline 27
0034 ; {
0034 ; delay_us(1000);
0034 ; time--;
0034 ; }
0034 ; }
0034 ;
0034 ; void main()
0034 ; {
0034 .dbline 29
0034 ; unsigned char i;
0034 ; port_init(); //端口初始化
0034 E5DF rcall _port_init
0036 0DC0 rjmp L12
0038 L11:
0038 .dbline 30
0038 ; while(1){
0038 .dbline 31
0038 ; i=PIND&0x04; //读出PD2口状态
0038 49B1 in R20,0x9
003A 4470 andi R20,4
003C .dbline 32
003C ; if(i==0){
003C 41F4 brne L14
003E .dbline 32
003E .dbline 33
003E ; PORTD^=0x8;
003E 88E0 ldi R24,8
0040 2BB0 in R2,0xb
0042 2826 eor R2,R24
0044 2BB8 out 0xb,R2
0046 .dbline 34
0046 ; delay_ms(200);
0046 08EC ldi R16,200
0048 10E0 ldi R17,0
004A E7DF rcall _delay_ms
004C .dbline 35
004C ; }
004C 02C0 rjmp L15
004E L14:
004E .dbline 37
004E ; else
004E ; PORTD=0XFF;
004E 8FEF ldi R24,255
0050 8BB9 out 0xb,R24
0052 L15:
0052 .dbline 38
0052 L12:
0052 .dbline 30
0052 F2CF rjmp L11
0054 X1:
0054 .dbline -2
0054 L10:
0054 .dbline 0 ; func end
0054 0895 ret
0056 .dbsym r i 20 c
0056 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -