📄 main.s
字号:
.module main.c
.area text(rom, con, rel)
.dbfile F:\全物理仿真\mega128\uart_0\main.c
.dbfunc e main _main fV
; out2 -> R22
; out1 -> R10
; rc -> R12
; i -> R14
.even
_main::
.dbline -1
.dbline 6
; #include "includes.h"
;
;
; /*main function of USART communication */
; void main()
; {
.dbline 9
; U8 i,rc,out1,out2;
;
; port_init();
xcall _port_init
.dbline 10
; uart0_init();
xcall _uart0_init
.dbline 12
;
; printf("Main running ...");
ldi R16,<L2
ldi R17,>L2
xcall _printf
xjmp L4
L3:
.dbline 15
;
; while(1)
; {
.dbline 16
; uart0_putchar('a');
ldi R16,97
xcall _uart0_putchar
.dbline 17
; uart0_putchar(0xd);uart0_putchar(0xa);
ldi R16,13
xcall _uart0_putchar
.dbline 17
ldi R16,10
xcall _uart0_putchar
.dbline 18
; rc=uart0_waitchar();
xcall _uart0_waitchar
mov R12,R16
.dbline 20
;
; switch(rc)
mov R20,R12
clr R21
cpi R20,48
ldi R30,0
cpc R21,R30
breq L13
cpi R20,49
ldi R30,0
cpc R21,R30
breq L18
cpi R20,50
ldi R30,0
cpc R21,R30
brne X3
xjmp L23
X3:
cpi R20,48
ldi R30,0
cpc R21,R30
brge X4
xjmp L6
X4:
L28:
cpi R20,120
ldi R30,0
cpc R21,R30
breq L9
xjmp L6
X0:
.dbline 21
; {
L9:
.dbline 23
; case 'x':
; WDR();
wdr
.dbline 24
; WDTCR = 0x0E;
ldi R24,14
out 0x21,R24
L10:
.dbline 25
L11:
.dbline 25
; while(1);
xjmp L10
X1:
.dbline 26
; break;
xjmp L7
L13:
.dbline 29
;
; case '0':
; for(i=0;i<5;i++)
clr R14
xjmp L17
L14:
.dbline 30
.dbline 31
mov R16,R14
subi R16,208 ; addi 48
xcall _uart0_putchar
.dbline 32
L15:
.dbline 29
inc R14
L17:
.dbline 29
mov R24,R14
cpi R24,5
brlo L14
.dbline 33
; {
; uart0_putchar('0'+i);
; }
; delay_ms(100);
ldi R16,100
ldi R17,0
xcall _delay_ms
.dbline 34
; port_init0();
xcall _port_init0
.dbline 35
; out1 = PINA;
in R10,0x19
.dbline 36
; out2 = PINC;
in R22,0x13
.dbline 37
; break;
xjmp L7
L18:
.dbline 40
;
; case '1':
; for(i=5;i<10;i++)
ldi R24,5
mov R14,R24
xjmp L22
L19:
.dbline 41
.dbline 42
mov R16,R14
subi R16,208 ; addi 48
xcall _uart0_putchar
.dbline 43
L20:
.dbline 40
inc R14
L22:
.dbline 40
mov R24,R14
cpi R24,10
brlo L19
.dbline 44
; {
; uart0_putchar('0'+i);
; }
; delay_ms(100);
ldi R16,100
ldi R17,0
xcall _delay_ms
.dbline 45
; port_init1();
xcall _port_init1
.dbline 46
; out1 = PINA;
in R10,0x19
.dbline 47
; out2 = PINC;
in R22,0x13
.dbline 48
; break;
xjmp L7
L23:
.dbline 51
;
; case '2':
; for(i='a';i<='z';i++)
ldi R24,97
mov R14,R24
xjmp L27
L24:
.dbline 52
.dbline 53
mov R16,R14
subi R16,159 ; addi 97
xcall _uart0_putchar
.dbline 54
L25:
.dbline 51
inc R14
L27:
.dbline 51
ldi R24,122
cp R24,R14
brsh L24
.dbline 55
; {
; uart0_putchar('a'+i);
; }
; delay_ms(100);
ldi R16,100
ldi R17,0
xcall _delay_ms
.dbline 56
; port_init2();
xcall _port_init2
.dbline 57
; out1 = PINA;
in R10,0x19
.dbline 58
; out2 = PINC;
in R22,0x13
.dbline 59
; break;
L6:
L7:
.dbline 62
L4:
.dbline 14
xjmp L3
X2:
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r out2 22 c
.dbsym r out1 10 c
.dbsym r rc 12 c
.dbsym r i 14 c
.dbend
.area data(ram, con, rel)
.dbfile F:\全物理仿真\mega128\uart_0\main.c
L2:
.blkb 18
.area idata
.byte 'M,'a,'i,'n,32,'r,'u,'n,'n,'i,'n,'g,32,32,46,46
.byte 46,0
.area data(ram, con, rel)
.dbfile F:\全物理仿真\mega128\uart_0\main.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -