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

📄 128l_usart.lst

📁 AVRmega28L的串口发送数据程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
    010C 2777      CLR	R23
    010D C002      RJMP	0x0110
    010E 5F6F      SUBI	R22,0xFF
    010F 4F7F      SBCI	R23,0xFF
    0110 1760      CP	R22,R16
    0111 0771      CPC	R23,R17
    0112 F3DC      BLT	0x010E
    0113 5F4F      SUBI	R20,0xFF
    0114 4F5F      SBCI	R21,0xFF
    0115 1740      CP	R20,R16
    0116 0751      CPC	R21,R17
    0117 F39C      BLT	0x010B
    0118 940E0182  CALL	pop_gset2
    011A 9508      RET
(0094) }
(0095) 
(0096) //////////////////////////////////////////////////////////
(0097) /*led_on_off()
(0098) /*LED的开和关闭
(0099) */
(0100) void led_on_off(BYTE led_flag)
(0101) {
(0102)     //设置PC0口为输出0,点亮LED
(0103)     if(led_flag==1)
_led_on_off:
  led_flag             --> R16
    011B 3001      CPI	R16,1
    011C F439      BNE	0x0124
(0104)     {
(0105)         PBO.B4=0 ;
    011D B388      IN	R24,0x18
    011E 7E8F      ANDI	R24,0xEF
    011F BB88      OUT	0x18,R24
(0106)         PBD.B4=1 ;
    0120 B387      IN	R24,0x17
    0121 6180      ORI	R24,0x10
    0122 BB87      OUT	0x17,R24
(0107)     }
    0123 C006      RJMP	0x012A
(0108)     //设置PC0口为输出1,关闭LED
(0109)     else 
(0110)     {
(0111)         PBO.B4=1 ;
    0124 B388      IN	R24,0x18
    0125 6180      ORI	R24,0x10
    0126 BB88      OUT	0x18,R24
(0112)         PBD.B4=1 ;
    0127 B387      IN	R24,0x17
    0128 6180      ORI	R24,0x10
    0129 BB87      OUT	0x17,R24
(0113)     }
    012A 9508      RET
_led_response:
  i                    --> R20
  t                    --> R22
    012B 940E018B  CALL	push_gset2
    012D 01B8      MOVW	R22,R16
(0114) }
(0115) 
(0116) void led_response (int t)
(0117) {
(0118)  int i;
(0119)  for(i = 0;i < t;i++)
    012E 2744      CLR	R20
    012F 2755      CLR	R21
    0130 C00C      RJMP	0x013D
(0120)   {
(0121)     led_on_off(ON);           //点亮LED灯
    0131 E001      LDI	R16,1
    0132 DFE8      RCALL	_led_on_off
(0122)     delay(150);
    0133 E906      LDI	R16,0x96
    0134 E010      LDI	R17,0
    0135 DFD0      RCALL	_delay
(0123)     led_on_off(OFF);           //关闭LED灯
    0136 2700      CLR	R16
    0137 DFE3      RCALL	_led_on_off
(0124)     delay(150);    
    0138 E906      LDI	R16,0x96
    0139 E010      LDI	R17,0
    013A DFCB      RCALL	_delay
    013B 5F4F      SUBI	R20,0xFF
    013C 4F5F      SBCI	R21,0xFF
    013D 1746      CP	R20,R22
    013E 0757      CPC	R21,R23
    013F F38C      BLT	0x0131
    0140 940E0182  CALL	pop_gset2
    0142 9508      RET
(0125)   }
(0126) }
(0127) 
(0128) void SPI_MasterInit(void)
(0129) {
(0130) /* 设置MOSI 和SCK 片选为输出,其他为输入 */
(0131) PORTB |= (1<<PB3) | (1<<PB4) | (1<<PB5) | (1<<PB6); 
_SPI_MasterInit:
    0143 B388      IN	R24,0x18
    0144 6788      ORI	R24,0x78
    0145 BB88      OUT	0x18,R24
(0132) DDRB = (1<<DDB2)|(1<<DDB1)|(1<<DDB0);
    0146 E087      LDI	R24,7
    0147 BB87      OUT	0x17,R24
(0133) /* 使能SPI 主机模式,设置时钟速率为fck/16 */
(0134) SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
    0148 E581      LDI	R24,0x51
    0149 B98D      OUT	0x0D,R24
    014A 9508      RET
(0135) }
(0136) void SPI_MasterTransmit(char cData)
(0137) {
(0138) PORTB &=~ (1<<PB0); //强制接收方进入从模式
_SPI_MasterTransmit:
  cData                --> R16
    014B 98C0      CBI	0x18,0
(0139) SPCR |= (1<<MSTR); // MSTR有时会被清零,这里强制进入主机模式
    014C 9A6C      SBI	0x0D,4
(0140) /* 启动数据传输 */
(0141) SPDR = cData;
    014D B90F      OUT	0x0F,R16
(0142) /* 等待传输结束 */
(0143) while(!(SPSR & (1<<SPIF)));
    014E 9B77      SBIS	0x0E,7
    014F CFFE      RJMP	0x014E
    0150 9508      RET
FILE: F:\我的BACK\淘宝\128开发板\程序\128L_USART1\debug.c
(0001) #include "config.h"
(0002) 
(0003) 
(0004) void Usart0_byte( BYTE OneByte )
(0005)   {     
(0006)       while ( ! (UCSR0A & (1 << UDRE0) ) );    /* Waiting for empty transmit buffer */              
_Usart0_byte:
  OneByte              --> R16
    0151 9B5D      SBIS	0x0B,5
    0152 CFFE      RJMP	_Usart0_byte
(0007)       UDR0 = OneByte;     
    0153 B90C      OUT	0x0C,R16
(0008)       while( ! (UCSR0A & (1 << TXC0) ) );                
    0154 9B5E      SBIS	0x0B,6
    0155 CFFE      RJMP	0x0154
    0156 9508      RET
(0009)   }
(0010) void Usart1_byte(BYTE OneByte)
(0011) {
(0012) 	/*///while (!CHECK_BIT(UCSR0A,1<<UDRE0));
(0013) 	int i,j;
(0014) 	UDR0 = data ;
(0015) 	for(i=0;i<200;i++)
(0016) 		for(j=0;j<200;j++);
(0017) 	///while (!CHECK_BIT(UCSR0A, 1<<TXC0));
(0018) 	
(0019) 	return 0;*/
(0020) 	while ( ! (UCSR1A & (1 << UDRE1) ) );    /* Waiting for empty transmit buffer */              
_Usart1_byte:
  OneByte              --> R16
    0157 9020009B  LDS	R2,0x9B
    0159 FE25      SBRS	R2,5
    015A CFFC      RJMP	_Usart1_byte
(0021)       UDR1 = OneByte;     
    015B 9300009C  STS	0x9C,R16
(0022)       while( ! (UCSR1A & (1 << TXC1) ) );     
    015D 9020009B  LDS	R2,0x9B
    015F FE26      SBRS	R2,6
    0160 CFFC      RJMP	0x015D
    0161 9508      RET
_debug0_Print:
  buf                  --> R20
    0162 940E018D  CALL	push_gset1
    0164 01A8      MOVW	R20,R16
(0023) } 
(0024)   
(0025)   
(0026) void debug0_Print(char* buf)
(0027) {
    0165 C005      RJMP	0x016B
(0028)        while ( *buf != '\0' )
(0029)         {
(0030)             Usart0_byte( *buf );
    0166 01FA      MOVW	R30,R20
    0167 8100      LDD	R16,Z+0
    0168 DFE8      RCALL	_Usart0_byte
(0031)             buf++;                                  
    0169 5F4F      SUBI	R20,0xFF
    016A 4F5F      SBCI	R21,0xFF
    016B 01FA      MOVW	R30,R20
    016C 8020      LDD	R2,Z+0
    016D 2022      TST	R2
    016E F7B9      BNE	0x0166
    016F 940E0190  CALL	pop_gset1
    0171 9508      RET
_debug1_Print:
  buf                  --> R20
    0172 940E018D  CALL	push_gset1
    0174 01A8      MOVW	R20,R16
(0032)         }
(0033) }
(0034)   
(0035) void debug1_Print(char* buf)
(0036) {
    0175 C005      RJMP	0x017B
(0037)        while ( *buf != '\0' )
(0038)         {
(0039)             Usart1_byte( *buf );
    0176 01FA      MOVW	R30,R20
    0177 8100      LDD	R16,Z+0
    0178 DFDE      RCALL	_Usart1_byte
(0040)             buf++;                                  
FILE: <library>
    0179 5F4F      SUBI	R20,0xFF
    017A 4F5F      SBCI	R21,0xFF
    017B 01FA      MOVW	R30,R20
    017C 8020      LDD	R2,Z+0
    017D 2022      TST	R2
    017E F7B9      BNE	0x0176
    017F 940E0190  CALL	pop_gset1
    0181 9508      RET
pop_gset2:
    0182 E0E2      LDI	R30,2
    0183 940C0191  JMP	pop
push_gset5:
    0185 92FA      ST	R15,-Y
    0186 92EA      ST	R14,-Y
push_gset4:
    0187 92DA      ST	R13,-Y
    0188 92CA      ST	R12,-Y
push_gset3:
    0189 92BA      ST	R11,-Y
    018A 92AA      ST	R10,-Y
push_gset2:
    018B 937A      ST	R23,-Y
    018C 936A      ST	R22,-Y
push_gset1:
    018D 935A      ST	R21,-Y
    018E 934A      ST	R20,-Y
    018F 9508      RET
pop_gset1:
    0190 E0E1      LDI	R30,1
pop:
    0191 9149      LD	R20,Y+
    0192 9159      LD	R21,Y+
    0193 FDE0      SBRC	R30,0
    0194 9508      RET
    0195 9169      LD	R22,Y+
    0196 9179      LD	R23,Y+
    0197 FDE1      SBRC	R30,1
    0198 9508      RET
    0199 90A9      LD	R10,Y+
    019A 90B9      LD	R11,Y+
    019B FDE2      SBRC	R30,2
    019C 9508      RET
    019D 90C9      LD	R12,Y+
    019E 90D9      LD	R13,Y+
    019F FDE3      SBRC	R30,3
    01A0 9508      RET
    01A1 90E9      LD	R14,Y+
    01A2 90F9      LD	R15,Y+
    01A3 9508      RET

⌨️ 快捷键说明

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