📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile D:\桌面\avr程序设计\串口通讯范例\main.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 8
0000 ; //ICC-AVR application builder : 2006-11-11 12:55:39
0000 ; // Target : M16
0000 ; // Crystal: 7.3728Mhz
0000 ;
0000 ; #include "config.h"
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 9
0000 ; PORTA = 0x03;
0000 83E0 ldi R24,3
0002 8BBB out 0x1b,R24
0004 .dbline 10
0004 ; DDRA = 0x03;
0004 8ABB out 0x1a,R24
0006 .dbline 11
0006 ; PORTB = 0x00;
0006 2224 clr R2
0008 28BA out 0x18,R2
000A .dbline 12
000A ; DDRB = 0x00;
000A 27BA out 0x17,R2
000C .dbline 13
000C ; PORTC = 0x00; //m103 output only
000C 25BA out 0x15,R2
000E .dbline 14
000E ; DDRC = 0x00;
000E 24BA out 0x14,R2
0010 .dbline 15
0010 ; PORTD = 0x00;
0010 22BA out 0x12,R2
0012 .dbline 16
0012 ; DDRD = 0x00;
0012 21BA out 0x11,R2
0014 .dbline -2
0014 L2:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbend
0016 .dbfunc e init_devices _init_devices fV
.even
0016 _init_devices::
0016 .dbline -1
0016 .dbline 21
0016 ; }
0016 ;
0016 ; //call this routine to initialize all peripherals
0016 ; void init_devices(void)
0016 ; {
0016 .dbline 23
0016 ; //stop errant interrupts until set up
0016 ; CLI(); //disable all interrupts
0016 F894 cli
0018 .dbline 24
0018 ; port_init();
0018 F3DF xcall _port_init
001A .dbline 26
001A ;
001A ; MCUCR = 0x00;
001A 2224 clr R2
001C 25BE out 0x35,R2
001E .dbline 27
001E ; GICR = 0x00;
001E 2BBE out 0x3b,R2
0020 .dbline 28
0020 ; TIMSK = 0x00; //timer interrupt sources
0020 29BE out 0x39,R2
0022 .dbline 29
0022 ; Com_init(); //串行口初始化
0022 0E940000 xcall _Com_init
0026 .dbline 30
0026 ; SEI(); //re-enable interrupts
0026 7894 sei
0028 .dbline -2
0028 L3:
0028 .dbline 0 ; func end
0028 0895 ret
002A .dbend
002A .dbfunc e Delay _Delay fV
002A ; i -> R16
002A ; j -> R18
.even
002A _Delay::
002A .dbline -1
002A .dbline 35
002A ; //all peripherals are now initialized
002A ; }
002A ;
002A ; void Delay(void) //软件延时
002A ; {
002A .dbline 37
002A ; unsigned char i,j;
002A ; for(i=200;i>0;i--)
002A 08EC ldi R16,200
002C 0DC0 xjmp L8
002E L5:
002E .dbline 38
002E ; {
002E .dbline 39
002E ; for(j=200;j>0;j--)
002E 28EC ldi R18,200
0030 01C0 xjmp L12
0032 L9:
0032 .dbline 40
0032 L10:
0032 .dbline 39
0032 2A95 dec R18
0034 L12:
0034 .dbline 39
0034 2224 clr R2
0036 2216 cp R2,R18
0038 E0F3 brlo L9
003A .dbline 41
003A ; ;
003A ; for(j=200;j>0;j--)
003A 28EC ldi R18,200
003C 01C0 xjmp L16
003E L13:
003E .dbline 42
003E L14:
003E .dbline 41
003E 2A95 dec R18
0040 L16:
0040 .dbline 41
0040 2224 clr R2
0042 2216 cp R2,R18
0044 E0F3 brlo L13
0046 .dbline 43
0046 L6:
0046 .dbline 37
0046 0A95 dec R16
0048 L8:
0048 .dbline 37
0048 2224 clr R2
004A 2016 cp R2,R16
004C 80F3 brlo L5
004E .dbline -2
004E L4:
004E .dbline 0 ; func end
004E 0895 ret
0050 .dbsym r i 16 c
0050 .dbsym r j 18 c
0050 .dbend
0050 .dbfunc e main _main fV
0050 ; SIO_buff -> y+2
.even
0050 _main::
0050 2697 sbiw R28,6
0052 .dbline -1
0052 .dbline 47
0052 ; ;
0052 ; }
0052 ; }
0052 ;
0052 ; void main(void)
0052 ; {
0052 .dbline 49
0052 ; uint8 SIO_buff[4]; //定义串口数据缓冲区
0052 ; init_devices();
0052 E1DF xcall _init_devices
0054 .dbline 51
0054 ; //指示单片机正常开始工作,一亮,二亮,都亮,都灭
0054 ; PORTA = 0x02; //1脚为高,0脚为低,0脚灯亮
0054 82E0 ldi R24,2
0056 8BBB out 0x1b,R24
0058 .dbline 52
0058 ; Delay(); //延时
0058 E8DF xcall _Delay
005A .dbline 53
005A ; PORTA = 0x01; //0脚为高,1脚为低,1脚灯亮
005A 81E0 ldi R24,1
005C 8BBB out 0x1b,R24
005E .dbline 54
005E ; Delay(); //延时
005E E5DF xcall _Delay
0060 .dbline 55
0060 ; PORTA = 0x00; //同时亮
0060 2224 clr R2
0062 2BBA out 0x1b,R2
0064 .dbline 56
0064 ; Delay(); //延时
0064 E2DF xcall _Delay
0066 .dbline 57
0066 ; PORTA = 0x03; //同时灭
0066 83E0 ldi R24,3
0068 8BBB out 0x1b,R24
006A .dbline 59
006A ;
006A ; Com_putstring ("ww",2,&RTbuf_UART0); //输出一个字符串到串行口
006A 80E0 ldi R24,<_RTbuf_UART0
006C 90E0 ldi R25,>_RTbuf_UART0
006E 9983 std y+1,R25
0070 8883 std y+0,R24
0072 22E0 ldi R18,2
0074 00E0 ldi R16,<L18
0076 10E0 ldi R17,>L18
0078 0E940000 xcall _Com_putstring
007C 2FC0 xjmp L20
007E L19:
007E .dbline 62
007E ;
007E ; while(1)
007E ; {
007E .dbline 63
007E ; if(Com_R_count(&RTbuf_UART0)!=0)
007E 00E0 ldi R16,<_RTbuf_UART0
0080 10E0 ldi R17,>_RTbuf_UART0
0082 0E940000 xcall _Com_R_count
0086 0023 tst R16
0088 F9F0 breq L22
008A .dbline 64
008A ; {
008A .dbline 65
008A ; Com_getstring (SIO_buff,1,&RTbuf_UART0);
008A 80E0 ldi R24,<_RTbuf_UART0
008C 90E0 ldi R25,>_RTbuf_UART0
008E 9983 std y+1,R25
0090 8883 std y+0,R24
0092 21E0 ldi R18,1
0094 8E01 movw R16,R28
0096 0E5F subi R16,254 ; offset = 2
0098 1F4F sbci R17,255
009A 0E940000 xcall _Com_getstring
009E .dbline 66
009E ; Com_Rbuf_Clear(&RTbuf_UART0); //清空buffer
009E 00E0 ldi R16,<_RTbuf_UART0
00A0 10E0 ldi R17,>_RTbuf_UART0
00A2 0E940000 xcall _Com_Rbuf_Clear
00A6 .dbline 67
00A6 ; if(SIO_buff[0]==1) //接收到一个一
00A6 8A81 ldd R24,y+2
00A8 8130 cpi R24,1
00AA 71F4 brne L24
00AC .dbline 68
00AC ; {
00AC .dbline 69
00AC ; Com_putstring ("ok!!",4,&RTbuf_UART0); //输出一个字符串到串行口
00AC 80E0 ldi R24,<_RTbuf_UART0
00AE 90E0 ldi R25,>_RTbuf_UART0
00B0 9983 std y+1,R25
00B2 8883 std y+0,R24
00B4 24E0 ldi R18,4
00B6 00E0 ldi R16,<L26
00B8 10E0 ldi R17,>L26
00BA 0E940000 xcall _Com_putstring
00BE .dbline 70
00BE ; PORTA = 0x00; //同时亮
00BE 2224 clr R2
00C0 2BBA out 0x1b,R2
00C2 .dbline 71
00C2 ; Delay(); //延时
00C2 B3DF xcall _Delay
00C4 .dbline 72
00C4 ; PORTA = 0x03; //同时灭
00C4 83E0 ldi R24,3
00C6 8BBB out 0x1b,R24
00C8 .dbline 73
00C8 ; }
00C8 L24:
00C8 .dbline 74
00C8 ; } //end of if(Com_R_count(&RTbuf_UART0)!=0)
00C8 L22:
00C8 .dbline 75
00C8 B0DF xcall _Delay
00CA .dbline 76
00CA 80E0 ldi R24,<_RTbuf_UART0
00CC 90E0 ldi R25,>_RTbuf_UART0
00CE 9983 std y+1,R25
00D0 8883 std y+0,R24
00D2 24E0 ldi R18,4
00D4 00E0 ldi R16,<L27
00D6 10E0 ldi R17,>L27
00D8 0E940000 xcall _Com_putstring
00DC .dbline 77
00DC L20:
00DC .dbline 61
00DC D0CF xjmp L19
00DE X0:
00DE .dbline -2
00DE L17:
00DE 2696 adiw R28,6
00E0 .dbline 0 ; func end
00E0 0895 ret
00E2 .dbsym l SIO_buff 2 A[4:4]c
00E2 .dbend
.area data(ram, con, rel)
0000 .dbfile D:\桌面\avr程序设计\串口通讯范例\main.c
0000 L27:
0000 .blkb 5
.area idata
0000 7777303000 .byte 'w,'w,48,48,0
.area data(ram, con, rel)
0005 .dbfile D:\桌面\avr程序设计\串口通讯范例\main.c
0005 L26:
0005 .blkb 5
.area idata
0005 6F6B212100 .byte 'o,'k,33,33,0
.area data(ram, con, rel)
000A .dbfile D:\桌面\avr程序设计\串口通讯范例\main.c
000A L18:
000A .blkb 3
.area idata
000A 777700 .byte 'w,'w,0
.area data(ram, con, rel)
000D .dbfile D:\桌面\avr程序设计\串口通讯范例\main.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -