?? main.lis
字號:
.module main.c
.area data(ram, con, rel)
0000 _RecCount::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile E:\project\大壩\code\AVR\main.c
0001 .dbsym e RecCount _RecCount c
.area text(rom, con, rel)
0000 .dbfile E:\project\大壩\code\AVR\main.c
0000 .dbfunc e Delay _Delay fV
0000 ; n -> R20,R21
0000 ; m -> R22,R23
0000 ; time -> R16,R17
.even
0000 _Delay::
0000 0E940000 xcall push_gset2
0004 .dbline -1
0004 .dbline 17
0004 ; #include <iom128v.h>
0004 ; #include <macros.h>
0004 ; #define fosc 8000000 //晶振8MHZ
0004 ; #define baud 9600 //與指紋頭通訊的波特率
0004 ; #define FrameCount 10
0004 ; #define uint unsigned int
0004 ; #define uchar unsigned char
0004 ;
0004 ; #define Set485Rec PORTG |= (1<<2)
0004 ; #define Set485Send PORTG &= ~(1<<2)
0004 ;
0004 ; uchar RecComm[10];
0004 ; uchar SendComm[10];
0004 ; uchar RecCount=0;
0004 ;
0004 ; void Delay(uint time)
0004 ; {
0004 .dbline 19
0004 ; uint m,n;
0004 ; for(n=0;n<time;n++)
0004 4427 clr R20
0006 5527 clr R21
0008 0BC0 xjmp L5
000A L2:
000A .dbline 20
000A ; {
000A .dbline 21
000A 6627 clr R22
000C 7727 clr R23
000E 02C0 xjmp L9
0010 L6:
0010 .dbline 21
0010 L7:
0010 .dbline 21
0010 6F5F subi R22,255 ; offset = 1
0012 7F4F sbci R23,255
0014 L9:
0014 .dbline 21
0014 6030 cpi R22,0
0016 E1E0 ldi R30,1
0018 7E07 cpc R23,R30
001A D0F3 brlo L6
001C .dbline 22
001C L3:
001C .dbline 19
001C 4F5F subi R20,255 ; offset = 1
001E 5F4F sbci R21,255
0020 L5:
0020 .dbline 19
0020 4017 cp R20,R16
0022 5107 cpc R21,R17
0024 90F3 brlo L2
0026 .dbline -2
0026 .dbline 23
0026 ; for(m=0;m<256;m++);
0026 ; }
0026 ; }
0026 L1:
0026 0E940000 xcall pop_gset2
002A .dbline 0 ; func end
002A 0895 ret
002C .dbsym r n 20 i
002C .dbsym r m 22 i
002C .dbsym r time 16 i
002C .dbend
002C .dbfunc e Com0Init _Com0Init fV
.even
002C _Com0Init::
002C .dbline -1
002C .dbline 26
002C ;
002C ; void Com0Init(void) //串口通訊初始化程序
002C ; {
002C .dbline 27
002C ; UCSR0B = 0x00; //設置波特率時關閉發送和接收
002C 2224 clr R2
002E 2AB8 out 0xa,R2
0030 .dbline 28
0030 ; UCSR0A = 0x00;
0030 2BB8 out 0xb,R2
0032 .dbline 29
0032 ; UBRR0L=(fosc/16/(baud+1))%256;
0032 84E3 ldi R24,52
0034 89B9 out 0x9,R24
0036 .dbline 30
0036 ; UBRR0H=(fosc/16/(baud+1))/256;
0036 20929000 sts 144,R2
003A .dbline 31
003A ; UCSR0C=(1<<UCSZ01)|(1<<UCSZ00); //8位數據+1位STOP位
003A 86E0 ldi R24,6
003C 80939500 sts 149,R24
0040 .dbline 32
0040 ; UCSR0B=(1<<RXEN0)|(1<<TXEN0)|(1<<RXCIE0); //允許發送和接收
0040 88E9 ldi R24,152
0042 8AB9 out 0xa,R24
0044 .dbline -2
0044 .dbline 34
0044 ; //UCSR0B=(1<<RXEN0)|(1<<TXEN0);
0044 ; }
0044 L10:
0044 .dbline 0 ; func end
0044 0895 ret
0046 .dbend
.area vector(rom, abs)
.org 72
0048 0C942300 jmp _uart0_rx_isr
.area text(rom, con, rel)
0046 .dbfile E:\project\大壩\code\AVR\main.c
0046 .dbfunc e uart0_rx_isr _uart0_rx_isr fV
.even
0046 _uart0_rx_isr::
0046 2A92 st -y,R2
0048 8A93 st -y,R24
004A 9A93 st -y,R25
004C EA93 st -y,R30
004E FA93 st -y,R31
0050 2FB6 in R2,0x3f
0052 2A92 st -y,R2
0054 .dbline -1
0054 .dbline 38
0054 ;
0054 ; #pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC
0054 ; void uart0_rx_isr()
0054 ; {
0054 L12:
0054 .dbline 39
0054 L13:
0054 .dbline 39
0054 5F9B sbis 0xb,7
0056 FECF rjmp L12
0058 .dbline 40
0058 A895 WDR
005A .dbline 41
005A 80E0 ldi R24,<_RecComm
005C 90E0 ldi R25,>_RecComm
005E E0910000 lds R30,_RecCount
0062 FF27 clr R31
0064 E80F add R30,R24
0066 F91F adc R31,R25
0068 2CB0 in R2,0xc
006A 2082 std z+0,R2
006C .dbline 42
006C 80910000 lds R24,_RecCount
0070 8F5F subi R24,255 ; addi 1
0072 80930000 sts _RecCount,R24
0076 .dbline 43
0076 8A30 cpi R24,10
0078 18F0 brlo L15
007A .dbline 43
007A 2224 clr R2
007C 20920000 sts _RecCount,R2
0080 L15:
0080 .dbline -2
0080 .dbline 44
0080 ; while(!(UCSR0A & (1<<RXC0)));
0080 ; asm("WDR");
0080 ; RecComm[RecCount] = UDR0;
0080 ; RecCount++;
0080 ; if(RecCount >= FrameCount) RecCount = 0;
0080 ; }
0080 L11:
0080 2990 ld R2,y+
0082 2FBE out 0x3f,R2
0084 F991 ld R31,y+
0086 E991 ld R30,y+
0088 9991 ld R25,y+
008A 8991 ld R24,y+
008C 2990 ld R2,y+
008E .dbline 0 ; func end
008E 1895 reti
0090 .dbend
0090 .dbfunc e SendFrame0 _SendFrame0 fV
0090 ; m -> R20
0090 ; pTem -> R22,R23
0090 ; CountFrame -> R10
0090 ; Frame -> R20,R21
.even
0090 _SendFrame0::
0090 0E940000 xcall push_gset3
0094 A22E mov R10,R18
0096 A801 movw R20,R16
0098 .dbline -1
0098 .dbline 47
0098 ;
0098 ; void SendFrame0(uchar *Frame,uchar CountFrame)
0098 ; {
0098 .dbline 49
0098 ; uchar *pTem,m;
0098 ; pTem = Frame;
0098 BA01 movw R22,R20
009A .dbline 50
009A ; Set485Send;
009A 80916500 lds R24,101
009E 8B7F andi R24,251
00A0 80936500 sts 101,R24
00A4 .dbline 51
00A4 ; Delay(100);
00A4 04E6 ldi R16,100
00A6 10E0 ldi R17,0
00A8 ABDF xcall _Delay
00AA .dbline 52
00AA ; for(m=0;m<CountFrame;m++)
00AA 4427 clr R20
00AC 0AC0 xjmp L21
00AE L18:
00AE .dbline 53
00AE ; {
00AE .dbline 54
00AE ; asm("WDR");
00AE A895 WDR
00B0 L22:
00B0 .dbline 55
00B0 L23:
00B0 .dbline 55
00B0 5D9B sbis 0xb,5
00B2 FECF rjmp L22
00B4 .dbline 56
00B4 A895 WDR
00B6 .dbline 57
00B6 FB01 movw R30,R22
00B8 2080 ldd R2,z+0
00BA 2CB8 out 0xc,R2
00BC .dbline 58
00BC 6F5F subi R22,255 ; offset = 1
00BE 7F4F sbci R23,255
00C0 .dbline 59
00C0 L19:
00C0 .dbline 52
00C0 4395 inc R20
00C2 L21:
00C2 .dbline 52
00C2 4A15 cp R20,R10
00C4 A0F3 brlo L18
00C6 .dbline 60
00C6 ; while (!(UCSR0A & (1<<UDRE0)));
00C6 ; asm("WDR");
00C6 ; UDR0 = *pTem;
00C6 ; pTem++;
00C6 ; }
00C6 ; Set485Rec;
00C6 80916500 lds R24,101
00CA 8460 ori R24,4
00CC 80936500 sts 101,R24
00D0 .dbline 61
00D0 ; Delay(100);
00D0 04E6 ldi R16,100
00D2 10E0 ldi R17,0
00D4 95DF xcall _Delay
00D6 .dbline -2
00D6 .dbline 62
00D6 ; }
00D6 L17:
00D6 0E940000 xcall pop_gset3
00DA .dbline 0 ; func end
00DA 0895 ret
00DC .dbsym r m 20 c
00DC .dbsym r pTem 22 pc
00DC .dbsym r CountFrame 10 c
00DC .dbsym r Frame 20 pc
00DC .dbend
00DC .dbfunc e main _main fV
00DC ; m -> R20
.even
00DC _main::
00DC .dbline -1
00DC .dbline 65
00DC ;
00DC ; void main(void)
00DC ; {
00DC .dbline 67
00DC ; uchar m;
00DC ; for(m=0;m<10;m++)
00DC 4427 clr R20
00DE 0AC0 xjmp L29
00E0 L26:
00E0 .dbline 68
00E0 .dbline 69
00E0 80E0 ldi R24,<_SendComm
00E2 90E0 ldi R25,>_SendComm
00E4 E42F mov R30,R20
00E6 FF27 clr R31
00E8 E80F add R30,R24
00EA F91F adc R31,R25
00EC 842F mov R24,R20
00EE 805D subi R24,208 ; addi 48
00F0 8083 std z+0,R24
00F2 .dbline 70
00F2 L27:
00F2 .dbline 67
00F2 4395 inc R20
00F4 L29:
00F4 .dbline 67
00F4 4A30 cpi R20,10
00F6 A0F3 brlo L26
00F8 .dbline 71
00F8 ; {
00F8 ; SendComm[m]=0x30+m;
00F8 ; }
00F8 ; DDRG |= (1<<2);
00F8 80916400 lds R24,100
00FC 8460 ori R24,4
00FE 80936400 sts 100,R24
0102 .dbline 72
0102 ; SEI();
0102 7894 sei
0104 .dbline 73
0104 ; Com0Init();
0104 93DF xcall _Com0Init
0106 .dbline 74
0106 ; SendFrame0(SendComm,10);
0106 2AE0 ldi R18,10
0108 00E0 ldi R16,<_SendComm
010A 10E0 ldi R17,>_SendComm
010C C1DF xcall _SendFrame0
010E .dbline 75
010E ; for(;;)
010E L30:
010E .dbline 76
010E .dbline 77
010E .dbline 77
010E .dbline 78
010E .dbline 75
010E .dbline 75
010E FFCF xjmp L30
0110 X0:
0110 .dbline -2
0110 L25:
0110 .dbline 0 ; func end
0110 0895 ret
0112 .dbsym r m 20 c
0112 .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\project\大壩\code\AVR\main.c
0000 _SendComm::
0000 .blkb 10
000A .dbsym e SendComm _SendComm A[10:10]c
000A _RecComm::
000A .blkb 10
0014 .dbsym e RecComm _RecComm A[10:10]c
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -