                        .module RS232.C
                        .area text(rom, con, rel)
 0000                   .dbfile ..\..\..\BK-AVR~1\BK-AVR128ÅäÌ×ÊµÑé³ÌÐò\ÊµD751~1\RS232.C
 0000                   .dbfile E:\BK-AVR~1\BK-AVR128ÅäÌ×ÊµÑé³ÌÐò\ÊµD751~1\RS232.C
 0000                   .dbfunc e main _main fV
 0000           ;              n -> R10
 0000           ;            tmp -> R10
                        .even
 0000           _main::
 0000                   .dbline -1
 0000                   .dbline 19
 0000           ; /********************************************************
 0000           ; ÊµÑéÊ®Ò»: ´®ÐÐÍ¨Ñ¸ÊµÑé
 0000           ; ËµÃ÷:     ÐèÒª´®¿Úµ÷Ð­ÖúÊµÑé(²¨ÌØÂÊÉèÎª9600) 
 0000           ;           ÔÚ´®¿Úµ÷ÊÔÖúÊÖÖÐÊäÈëÒª·¢ËÍµÄÄÚÈÝ£¬
 0000           ;                 µã·¢ËÍºóM128»á·µ»ØÏàÍ¬µÄÊý¾Ý
 0000           ; CPUÐÍºÅ:  ATMEGA128
 0000           ; Ê±ÖÓ:     8MHZ
 0000           ; ÈÕÆÚ£º    2009-8-2
 0000           ; ÁªÏµ·½·¨: MCU¡£2000@163.com 
 0000           ;  ********************************************************/
 0000           ; #include <iom128v.h>
 0000           ; #include <macros.h>
 0000           ; 
 0000           ; void USART0_Init( void );
 0000           ; void USART0_Transmit( unsigned char data );
 0000           ; unsigned char USART0_Receive( void );
 0000           ; 
 0000           ; void main(void)
 0000           ; {
 0000                   .dbline 20
 0000           ;      unsigned char n=0,tmp=0;
 0000                   .dbline 20
 0000 AA24              clr R10
 0002                   .dbline 22
 0002           ;        
 0002           ;        DDRB |=0X10;           //PB4ÉèÎªÊä³ö
 0002 BC9A              sbi 0x17,4
 0004                   .dbline 23
 0004           ;        PORTB|=0X10;           //¹Ø±ÕPB4Íâ½ÓµÄLED
 0004 C49A              sbi 0x18,4
 0006                   .dbline 25
 0006           ;        
 0006           ;        DDRF |=0X0E;           //LED¼°ÊýÂë¹ÜËø´æIO¿ÚÉèÎªÊä³ö
 0006 80916100          lds R24,97
 000A 8E60              ori R24,14
 000C 80936100          sts 97,R24
 0010                   .dbline 26
 0010           ;        PORTF|=0X0E;             
 0010 80916200          lds R24,98
 0014 8E60              ori R24,14
 0016 80936200          sts 98,R24
 001A                   .dbline 28
 001A           ;       
 001A           ;        DDRA=0XFF;             //LED IO¿ÚÉèÎªÊä³ö
 001A 8FEF              ldi R24,255
 001C 8ABB              out 0x1a,R24
 001E                   .dbline 29
 001E           ;        PORTA=0XFF;
 001E 8BBB              out 0x1b,R24
 0020                   .dbline 30
 0020           ;        PORTF&=0xF7;           //Ëø´æÊý¾Ý¹Ø±ÕLED
 0020 80916200          lds R24,98
 0024 877F              andi R24,247
 0026 80936200          sts 98,R24
 002A                   .dbline 32
 002A           ;        
 002A           ;        PORTA=0X00;
 002A 2224              clr R2
 002C 2BBA              out 0x1b,R2
 002E                   .dbline 33
 002E           ;        PORTF&=0XF8;           //Ëø´æÊý¾Ý¹Ø±ÕÊýÂë¹Ü
 002E 80916200          lds R24,98
 0032 887F              andi R24,248
 0034 80936200          sts 98,R24
 0038                   .dbline 35
 0038           ;        
 0038           ;      USART0_Init();         //²¨ÌØÂÊ9600 ³õÊ¼»¯´®¿Ú
 0038 08D0              xcall _USART0_Init
 003A 05C0              xjmp L3
 003C           L2:
 003C                   .dbline 37
 003C           ;      while(1)
 003C           ;      {
 003C                   .dbline 38
 003C           ;      if(UCSR0A&(1<<RXC0))   //Èç¹û½ÓÊÕ»º´æÇøÓÐÊý¾Ý
 003C 5F9B              sbis 0xb,7
 003E 03C0              rjmp L5
 0040           X0:
 0040                   .dbline 39
 0040           ;      {
 0040                   .dbline 40
 0040           ;      tmp=USART0_Receive();  //½ÓÊÕÊý¾Ý
 0040 10D0              xcall _USART0_Receive
 0042 A02E              mov R10,R16
 0044                   .dbline 41
 0044           ;      USART0_Transmit(tmp);  //·¢ËÍÊý¾Ý
 0044 0AD0              xcall _USART0_Transmit
 0046                   .dbline 42
 0046           ;      }
 0046           L5:
 0046                   .dbline 43
 0046           ;      }
 0046           L3:
 0046                   .dbline 36
 0046 FACF              xjmp L2
 0048           X1:
 0048                   .dbline -2
 0048           L1:
 0048                   .dbline 0 ; func end
 0048 0895              ret
 004A                   .dbsym r n 10 c
 004A                   .dbsym r tmp 10 c
 004A                   .dbend
 004A                   .dbfunc e USART0_Init _USART0_Init fV
 004A           ;            tmp -> <dead>
                        .even
 004A           _USART0_Init::
 004A                   .dbline -1
 004A                   .dbline 47
 004A           ; }
 004A           ; 
 004A           ; void USART0_Init( void )
 004A           ; {
 004A                   .dbline 49
 004A           ;      unsigned int tmp;     
 004A           ;      UBRR0L=51;                        /* ÉèÖÃ²¨ÌØÂÊ*/    
 004A 83E3              ldi R24,51
 004C 89B9              out 0x9,R24
 004E                   .dbline 50
 004E           ;      UCSR0B = (1<<RXEN0)|(1<<TXEN0);   /* ½ÓÊÕÆ÷Óë·¢ËÍÆ÷Ê¹ÄÜ*/   
 004E 88E1              ldi R24,24
 0050 8AB9              out 0xa,R24
 0052                   .dbline 51
 0052           ;      UCSR0C = (1<<UCSZ00)|(1<<UCSZ01); /* ÉèÖÃÖ¡¸ñÊ½: 8 ¸öÊý¾ÝÎ», 1¸öÍ£Ö¹Î»*/
 0052 86E0              ldi R24,6
 0054 80939500          sts 149,R24
 0058                   .dbline -2
 0058           L7:
 0058                   .dbline 0 ; func end
 0058 0895              ret
 005A                   .dbsym l tmp 1 i
 005A                   .dbend
 005A                   .dbfunc e USART0_Transmit _USART0_Transmit fV
 005A           ;           data -> R16
                        .even
 005A           _USART0_Transmit::
 005A                   .dbline -1
 005A                   .dbline 56
 005A           ; }
 005A           ; 
 005A           ; // Êý¾Ý·¢ËÍ¡¾·¢ËÍ5 µ½8 Î»Êý¾ÝÎ»µÄÖ¡¡¿
 005A           ; void USART0_Transmit( unsigned char data )
 005A           ; {
 005A           L9:
 005A                   .dbline 58
 005A           ;      /* µÈ´ý·¢ËÍ»º³åÆ÷Îª¿Õ */
 005A           ;      while ( !( UCSR0A & (1<<UDRE0)) );
 005A           L10:
 005A                   .dbline 58
 005A 5D9B              sbis 0xb,5
 005C FECF              rjmp L9
 005E           X2:
 005E                   .dbline 60
 005E           ;      /* ½«Êý¾Ý·ÅÈë»º³åÆ÷£¬·¢ËÍÊý¾Ý */
 005E           ;      UDR0 = data;
 005E 0CB9              out 0xc,R16
 0060                   .dbline -2
 0060           L8:
 0060                   .dbline 0 ; func end
 0060 0895              ret
 0062                   .dbsym r data 16 c
 0062                   .dbend
 0062                   .dbfunc e USART0_Receive _USART0_Receive fc
                        .even
 0062           _USART0_Receive::
 0062                   .dbline -1
 0062                   .dbline 65
 0062           ; } 
 0062           ; 
 0062           ; // Êý¾Ý½ÓÊÕ¡¾ÒÔ5 µ½8 ¸öÊý¾ÝÎ»µÄ·½Ê½½ÓÊÕÊý ¾ÝÖ¡¡¿
 0062           ; unsigned char USART0_Receive( void )
 0062           ; {
 0062           L13:
 0062                   .dbline 67
 0062           ;      /* µÈ´ý½ÓÊÕÊý¾Ý*/
 0062           ;      while ( !(UCSR0A & (1<<RXC0)) );
 0062           L14:
 0062                   .dbline 67
 0062 5F9B              sbis 0xb,7
 0064 FECF              rjmp L13
 0066           X3:
 0066                   .dbline 69
 0066           ;      /* ´Ó»º³åÆ÷ÖÐ»ñÈ¡²¢·µ»ØÊý¾Ý*/
 0066           ;      return UDR0;
 0066 0CB1              in R16,0xc
 0068                   .dbline -2
 0068           L12:
 0068                   .dbline 0 ; func end
 0068 0895              ret
 006A                   .dbend
 006A           ; } 
 006A           ; 
 006A           ; 
