⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 leson1.lis

📁 rewtr y vruutuyukyuj
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module leson1.c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\lesson\leson1.c
 0000                   .dbfunc e WDT_off _WDT_off fV
                        .even
 0000           _WDT_off::
 0000                   .dbline -1
 0000                   .dbline 12
 0000           ; #include  <io2313v.h>
 0000           ; #include  <macros.h>
 0000           ; #define  uint   unsigned int 
 0000           ; #define  uchar  unsigned char
 0000           ; //#define LED_SET     PORTD |= (1 << PD5)            //位置高
 0000           ; //#define LED_CLR     PORTD &= ~(1 << PD5)           //位置低
 0000           ; //#define LED_COM     PORTD ^= (1 << PD5)            //位取反
 0000           ; //#define LED_R       PIND & (1 << PD5)              //位读取
 0000           ; 
 0000           ; 
 0000           ; void WDT_off(void)
 0000           ; {
 0000                   .dbline 16
 0000           ; //__disable_interrupt();
 0000           ; //__watchdog_reset();
 0000           ; //#asm("cli");
 0000           ; SREG &= ~(1 << (SREG&0x80));
 0000 1FB7              in R17,0x3f
 0002 1078              andi R17,128
 0004 01E0              ldi R16,1
 0006 00D0              rcall lsl8
 0008 202E              mov R2,R16
 000A 2094              com R2
 000C 3FB6              in R3,0x3f
 000E 3220              and R3,R2
 0010 3FBE              out 0x3f,R3
 0012                   .dbline 19
 0012           ; //PORTD |= (1 << PD5)
 0012           ; // Clear WDRF in MCUSR 
 0012           ; MCUSR &= ~(1<<WDRF);
 0012 84B7              in R24,0x34
 0014 877F              andi R24,247
 0016 84BF              out 0x34,R24
 0018                   .dbline 23
 0018           ; // Write logical one to WDCE and WDE
 0018           ; // Keep old prescaler setting to prevent unintentional time-out
 0018           ; 
 0018           ; WDTCSR |= (1<<WDCE) | (1<<WDE);
 0018 81B5              in R24,0x21
 001A 8861              ori R24,24
 001C 81BD              out 0x21,R24
 001E                   .dbline 25
 001E           ; // Turn off WDT 
 001E           ; WDTCSR = 0x00;
 001E 2224              clr R2
 0020 21BC              out 0x21,R2
 0022                   .dbline 26
 0022           ; SREG |= (1 << (SREG&0x80));
 0022 1FB7              in R17,0x3f
 0024 1078              andi R17,128
 0026 01E0              ldi R16,1
 0028 00D0              rcall lsl8
 002A 2FB6              in R2,0x3f
 002C 202A              or R2,R16
 002E 2FBE              out 0x3f,R2
 0030                   .dbline -2
 0030           L1:
 0030                   .dbline 0 ; func end
 0030 0895              ret
 0032                   .dbend
 0032                   .dbfunc e USART_Init _USART_Init fV
 0032           ;           baud -> R16,R17
                        .even
 0032           _USART_Init::
 0032                   .dbline -1
 0032                   .dbline 32
 0032           ; //#asm("sei");
 0032           ; //__enable_interrupt();
 0032           ; }    
 0032           ; 
 0032           ; void USART_Init(unsigned int  baud)
 0032           ; {
 0032                   .dbline 34
 0032           ; /* Set baud rate */
 0032           ; UBRRH = (unsigned char)(baud>>8);
 0032 202E              mov R2,R16
 0034 312E              mov R3,R17
 0036 232C              mov R2,R3
 0038 3324              clr R3
 003A 22B8              out 0x2,R2
 003C                   .dbline 35
 003C           ; UBRRL = (unsigned char)baud;
 003C 09B9              out 0x9,R16
 003E                   .dbline 37
 003E           ; /* Enable receiver and transmitter */
 003E           ; UCSRB = (1<<RXEN)|(1<<TXEN);
 003E 88E1              ldi R24,24
 0040 8AB9              out 0xa,R24
 0042                   .dbline 39
 0042           ; /* Set frame format: 8data, 2stop bit */
 0042           ; UCSRC = (1<<USBS)|(3<<UCSZ0);
 0042 8EE0              ldi R24,14
 0044 83B9              out 0x3,R24
 0046                   .dbline -2
 0046           L2:
 0046                   .dbline 0 ; func end
 0046 0895              ret
 0048                   .dbsym r baud 16 i
 0048                   .dbend
 0048                   .dbfunc e USART_Transmit _USART_Transmit fV
 0048           ;           data -> R16
                        .even
 0048           _USART_Transmit::
 0048                   .dbline -1
 0048                   .dbline 45
 0048           ; //U2X=0;
 0048           ; }
 0048           ; 
 0048           ; 
 0048           ; void USART_Transmit( unsigned char data )
 0048           ; {
 0048           L4:
 0048                   .dbline 47
 0048           L5:
 0048                   .dbline 47
 0048           ; /* Wait for empty transmit buffer */
 0048           ; while ( !( UCSRA & (1<<UDRE)) );
 0048 5D9B              sbis 0xb,5
 004A FECF              rjmp L4
 004C                   .dbline 49
 004C           ; /* Put data into buffer, sends the data */
 004C           ; UDR = data;                                                                                    //Transmit 8  data  bits
 004C 0CB9              out 0xc,R16
 004E                   .dbline -2
 004E           L3:
 004E                   .dbline 0 ; func end
 004E 0895              ret
 0050                   .dbsym r data 16 c
 0050                   .dbend
 0050                   .dbfunc e USART_Receive _USART_Receive fc
                        .even
 0050           _USART_Receive::
 0050                   .dbline -1
 0050                   .dbline 68
 0050           ; }
 0050           ; 
 0050           ; /*
 0050           ; void USART_Transmit( unsigned int data )
 0050           ; {
 0050           ; //Wait for empty transmit buffer 
 0050           ; while (!( UCSRA & (1<<UDRE)));
 0050           ; // Copy 9th bit to TXB8 
 0050           ; UCSRB &= ~(1<<TXB8);
 0050           ; if ( data & 0x0100 )
 0050           ; UCSRB |= (1<<TXB8);
 0050           ; // Put data into buffer, sends the data 
 0050           ; UDR = data;                                                                                   //Transmit 9  data  bits
 0050           ; }
 0050           ; */
 0050           ; 
 0050           ; 
 0050           ; unsigned char USART_Receive( void )
 0050           ; {
 0050           L8:
 0050                   .dbline 70
 0050           L9:
 0050                   .dbline 70
 0050           ; // Wait for data to be received 
 0050           ; while ( !(UCSRA & (1<<RXC)) );
 0050 5F9B              sbis 0xb,7
 0052 FECF              rjmp L8
 0054                   .dbline 72
 0054           ; //Get and return received data from buffer 
 0054           ; return UDR;                                                                                   //Receive  8  data  bits
 0054 0CB1              in R16,0xc
 0056                   .dbline -2
 0056           L7:
 0056                   .dbline 0 ; func end
 0056 0895              ret
 0058                   .dbend
 0058                   .dbfunc e delay _delay fV
 0058           ;              i -> R20,R21
 0058           ;              j -> R22,R23
 0058           ;             ms -> R16,R17
                        .even
 0058           _delay::
 0058 00D0              rcall push_gset2
 005A                   .dbline -1
 005A                   .dbline 96
 005A           ; }
 005A           ; 
 005A           ; /*
 005A           ; unsigned int USART_Receive( void )
 005A           ; {
 005A           ; unsigned char status, resh, resl;
 005A           ; // Wait for data to be received 
 005A           ; while ( !(UCSRA & (1<<RXC)) );
 005A           ; // Get status and 9th bit, then data 
 005A           ; // from buffer 
 005A           ; status = UCSRA;
 005A           ; resh = UCSRB;
 005A           ; resl = UDR;
 005A           ; // If error, return -1 
 005A           ; if ( status & (1<<FE)|(1<<DOR)|(1<<UPE) )
 005A           ; return -1;
 005A           ; // Filter the 9th bit, then return 
 005A           ; resh = (resh >> 1) & 0x01;
 005A           ; return ((resh << 8) | resl);                  //Receive   9 data bits
 005A           ; }
 005A           ; */
 005A           ; 
 005A           ; void  delay(uint ms)
 005A           ; {
 005A                   .dbline 98
 005A           ; uint i,j;
 005A           ; for(i=0;i<ms;i++)
 005A 4427              clr R20
 005C 5527              clr R21
 005E 0BC0              rjmp L15
 0060           L12:
 0060                   .dbline 99
 0060           ;   {
 0060                   .dbline 100
 0060 6627              clr R22
 0062 7727              clr R23
 0064 02C0              rjmp L19
 0066           L16:
 0066                   .dbline 100
 0066           L17:
 0066                   .dbline 100
 0066 6F5F              subi R22,255  ; offset = 1
 0068 7F4F              sbci R23,255
 006A           L19:
 006A                   .dbline 100
 006A 6537              cpi R22,117

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -