📄 uart.lis
字号:
.module UART.C
.area data(ram, con, rel)
0000 _Table::
0000 .blkb 2
.area idata
0000 3F06 .byte 63,6
.area data(ram, con, rel)
0002 .blkb 2
.area idata
0002 5B4F .byte 91,'O
.area data(ram, con, rel)
0004 .blkb 2
.area idata
0004 666D .byte 'f,'m
.area data(ram, con, rel)
0006 .blkb 2
.area idata
0006 7D07 .byte 125,7
.area data(ram, con, rel)
0008 .blkb 2
.area idata
0008 7F6F .byte 127,'o
.area data(ram, con, rel)
000A .blkb 2
.area idata
000A 777C .byte 'w,124
.area data(ram, con, rel)
000C .blkb 2
.area idata
000C 395E .byte 57,94
.area data(ram, con, rel)
000E .blkb 2
.area idata
000E 7971 .byte 'y,'q
.area data(ram, con, rel)
0010 .dbfile J:\AVRpractice\BOOK\UARTforBook\UART.C
0010 .dbsym e Table _Table A[16:16]c
0010 _Send_Data::
0010 .blkb 2
.area idata
0010 6162 .byte 'a,'b
.area data(ram, con, rel)
0012 .dbfile J:\AVRpractice\BOOK\UARTforBook\UART.C
0012 .blkb 2
.area idata
0012 6364 .byte 'c,'d
.area data(ram, con, rel)
0014 .dbfile J:\AVRpractice\BOOK\UARTforBook\UART.C
0014 .dbsym e Send_Data _Send_Data A[4:4]c
0014 _Receive_Data::
0014 .blkb 2
.area idata
0014 0000 .byte 0,0
.area data(ram, con, rel)
0016 .dbfile J:\AVRpractice\BOOK\UARTforBook\UART.C
0016 .blkb 2
.area idata
0016 0000 .byte 0,0
.area data(ram, con, rel)
0018 .dbfile J:\AVRpractice\BOOK\UARTforBook\UART.C
0018 .dbsym e Receive_Data _Receive_Data A[4:4]c
.area text(rom, con, rel)
0000 .dbfile J:\AVRpractice\BOOK\UARTforBook\UART.C
0000 .dbfunc e DelayMs _DelayMs fV
0000 ; j -> R20,R21
0000 ; i -> R16,R17
.even
0000 _DelayMs::
0000 00D0 rcall push_gset1
0002 .dbline -1
0002 .dbline 11
0002 ; #include <io8535v.h>
0002 ; #define uchar unsigned char
0002 ; #define uint unsigned int
0002 ;
0002 ; uchar Table[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0002 ; 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
0002 ; uchar Send_Data[]={'a','b','c','d'};
0002 ; uchar Receive_Data[]={0,0,0,0};
0002 ;
0002 ; void DelayMs(uint i)
0002 ; {uint j;
0002 .dbline 12
0002 ; for(;i!=0;i--)
0002 0AC0 rjmp L5
0004 L2:
0004 .dbline 13
0004 .dbline 13
0004 40ED ldi R20,2000
0006 57E0 ldi R21,7
0008 02C0 rjmp L9
000A L6:
000A .dbline 13
000A .dbline 13
000A .dbline 13
000A L7:
000A .dbline 13
000A 4150 subi R20,1
000C 5040 sbci R21,0
000E L9:
000E .dbline 13
000E 4030 cpi R20,0
0010 4507 cpc R20,R21
0012 D9F7 brne L6
0014 X0:
0014 .dbline 13
0014 L3:
0014 .dbline 12
0014 0150 subi R16,1
0016 1040 sbci R17,0
0018 L5:
0018 .dbline 12
0018 0030 cpi R16,0
001A 0107 cpc R16,R17
001C 99F7 brne L2
001E X1:
001E .dbline -2
001E .dbline 14
001E ; {for(j=2000;j!=0;j--) {;}}
001E ; }
001E L1:
001E 00D0 rcall pop_gset1
0020 .dbline 0 ; func end
0020 0895 ret
0022 .dbsym r j 20 i
0022 .dbsym r i 16 i
0022 .dbend
0022 .dbfunc e Display _Display fV
0022 ; sel -> R20
0022 ; i -> R22
0022 ; p -> R10,R11
.even
0022 _Display::
0022 00D0 rcall push_gset3
0024 A02E mov R10,R16
0026 B12E mov R11,R17
0028 .dbline -1
0028 .dbline 17
0028 ;
0028 ; void Display(uchar *p) //动态显示函数,参数p为待显示的数组名
0028 ; {uchar i,sel=0x01;
0028 .dbline 17
0028 41E0 ldi R20,1
002A .dbline 18
002A ; for(i=0;i<4;i++)
002A 6627 clr R22
002C 17C0 rjmp L14
002E L11:
002E .dbline 19
002E .dbline 19
002E 4BBB out 0x1b,R20
0030 .dbline 20
0030 E62F mov R30,R22
0032 FF27 clr R31
0034 EA0D add R30,R10
0036 FB1D adc R31,R11
0038 E081 ldd R30,z+0
003A FF27 clr R31
003C 80E0 ldi R24,<_Table
003E 90E0 ldi R25,>_Table
0040 E80F add R30,R24
0042 F91F adc R31,R25
0044 2080 ldd R2,z+0
0046 3324 clr R3
0048 8FEF ldi R24,255
004A 90E0 ldi R25,0
004C 8219 sub R24,R2
004E 9309 sbc R25,R3
0050 85BB out 0x15,R24
0052 .dbline 21
0052 01E0 ldi R16,1
0054 10E0 ldi R17,0
0056 D4DF rcall _DelayMs
0058 .dbline 22
0058 440F lsl R20
005A .dbline 23
005A L12:
005A .dbline 18
005A 6395 inc R22
005C L14:
005C .dbline 18
005C 6430 cpi R22,4
005E 38F3 brlo L11
0060 .dbline -2
0060 .dbline 24
0060 ; {PORTA=sel; //选通最右边的数码管
0060 ; PORTC=0xff-Table[p[i]]; //送字型码
0060 ; DelayMs(1); //显示延时
0060 ; sel=sel<<1; //移位以显示前一位
0060 ; }
0060 ; }
0060 L10:
0060 00D0 rcall pop_gset3
0062 .dbline 0 ; func end
0062 0895 ret
0064 .dbsym r sel 20 c
0064 .dbsym r i 22 c
0064 .dbsym r p 10 pc
0064 .dbend
0064 .dbfunc e main _main fV
0064 ; temp -> <dead>
0064 ; i -> R20
.even
0064 _main::
0064 .dbline -1
0064 .dbline 27
0064 ;
0064 ; void main(void)
0064 ; {uchar temp,i;
0064 .dbline 28
0064 ; DDRA=0xff;
0064 8FEF ldi R24,255
0066 8ABB out 0x1a,R24
0068 .dbline 29
0068 ; DDRC=0xff;
0068 84BB out 0x14,R24
006A .dbline 30
006A ; PORTA=0xff;
006A 8BBB out 0x1b,R24
006C .dbline 31
006C ; PORTC=0x00;
006C 2224 clr R2
006E 25BA out 0x15,R2
0070 .dbline 32
0070 ; DelayMs(2000);
0070 00ED ldi R16,2000
0072 17E0 ldi R17,7
0074 C5DF rcall _DelayMs
0076 .dbline 33
0076 ; PORTC=0xff;
0076 8FEF ldi R24,255
0078 85BB out 0x15,R24
007A .dbline 34
007A ; UBRR=51;//9600bps,8.000M,
007A 83E3 ldi R24,51
007C 89B9 out 0x9,R24
007E .dbline 35
007E ; UCR=0x18;//RXD.TXD使能;
007E 88E1 ldi R24,24
0080 8AB9 out 0xa,R24
0082 .dbline 36
0082 ; for(i=0;i<4;i++)
0082 4427 clr R20
0084 0FC0 rjmp L19
0086 X2:
0086 .dbline 37
0086 ; {while(!(USR&0x80))
0086 L20:
0086 .dbline 38
0086 .dbline 38
0086 00E0 ldi R16,<_Receive_Data
0088 10E0 ldi R17,>_Receive_Data
008A CBDF rcall _Display
008C .dbline 38
008C L21:
008C .dbline 37
008C 5F9B sbis 0xb,7
008E FBCF rjmp L20
0090 .dbline 39
0090 80E0 ldi R24,<_Receive_Data
0092 90E0 ldi R25,>_Receive_Data
0094 E42F mov R30,R20
0096 FF27 clr R31
0098 E80F add R30,R24
009A F91F adc R31,R25
009C 8CB1 in R24,0xc
009E 8053 subi R24,48
00A0 8083 std z+0,R24
00A2 .dbline 39
00A2 L17:
00A2 .dbline 36
00A2 4395 inc R20
00A4 L19:
00A4 .dbline 36
00A4 4430 cpi R20,4
00A6 90F3 brlo L21
00A8 .dbline 40
00A8 ; {Display(Receive_Data);} //等待接收完成
00A8 ; Receive_Data[i]=UDR-48;} //接收数据
00A8 ; for(i=0;i<4;i++)
00A8 4427 clr R20
00AA 0EC0 rjmp L26
00AC X3:
00AC .dbline 41
00AC ; {while(!(USR&0x20))
00AC L27:
00AC .dbline 42
00AC .dbline 42
00AC 00E0 ldi R16,<_Receive_Data
00AE 10E0 ldi R17,>_Receive_Data
00B0 B8DF rcall _Display
00B2 .dbline 42
00B2 L28:
00B2 .dbline 41
00B2 5D9B sbis 0xb,5
00B4 FBCF rjmp L27
00B6 .dbline 43
00B6 80E0 ldi R24,<_Send_Data
00B8 90E0 ldi R25,>_Send_Data
00BA E42F mov R30,R20
00BC FF27 clr R31
00BE E80F add R30,R24
00C0 F91F adc R31,R25
00C2 2080 ldd R2,z+0
00C4 2CB8 out 0xc,R2
00C6 .dbline 43
00C6 L24:
00C6 .dbline 40
00C6 4395 inc R20
00C8 L26:
00C8 .dbline 40
00C8 4430 cpi R20,4
00CA 98F3 brlo L28
00CC 03C0 rjmp L31
00CE L30:
00CE .dbline 45
00CE 00E0 ldi R16,<_Receive_Data
00D0 10E0 ldi R17,>_Receive_Data
00D2 A7DF rcall _Display
00D4 L31:
00D4 .dbline 44
00D4 FCCF rjmp L30
00D6 X4:
00D6 .dbline -2
00D6 .dbline 46
00D6 ; {Display(Receive_Data); } //等待移位寄存器空;
00D6 ; UDR=Send_Data[i];}
00D6 ; while(1)
00D6 ; Display(Receive_Data);
00D6 ; }
00D6 L15:
00D6 .dbline 0 ; func end
00D6 0895 ret
00D8 .dbsym l temp 1 c
00D8 .dbsym r i 20 c
00D8 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -