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

📄 uart_pc.lst

📁 16个单片机c语言实验程序
💻 LST
字号:
__start:
__text_start:
     11D EFCF      LDI	R28,0xFF
     11E E1D0      LDI	R29,0x10
     11F BFCD      OUT	0x3D,R28
     120 BFDE      OUT	0x3E,R29
     121 51CE      SUBI	R28,0x1E
     122 40D0      SBCI	R29,0
     123 EA0A      LDI	R16,0xAA
     124 8308      STD	Y+0,R16
     125 2400      CLR	R0
     126 EAED      LDI	R30,0xAD
     127 E0F2      LDI	R31,2
     128 E012      LDI	R17,2
     129 3AED      CPI	R30,0xAD
     12A 07F1      CPC	R31,R17
     12B F011      BEQ	0x012E
     12C 9201      ST	R0,Z+
     12D CFFB      RJMP	0x0129
     12E 8300      STD	Z+0,R16
     12F E8EC      LDI	R30,0x8C
     130 E0F0      LDI	R31,0
     131 E0A0      LDI	R26,0
     132 E0B1      LDI	R27,1
     133 E012      LDI	R17,2
     134 E000      LDI	R16,0
     135 BF0B      OUT	0x3B,R16
     136 33E9      CPI	R30,0x39
     137 07F1      CPC	R31,R17
     138 F021      BEQ	0x013D
     139 95C8      LPM
     13A 9631      ADIW	R30,1
     13B 920D      ST	R0,X+
     13C CFF9      RJMP	0x0136
     13D 940E 017E CALL	_main
_exit:
     13F CFFF      RJMP	_exit
FILE: D:\16实验程序\串口通信\与计算机通信\uart0.h
(0001) #define uchar unsigned char
(0002) 
(0003) void port_init(void)
(0004) {
(0005)  PORTA = 0x00;
_port_init:
     140 2422      CLR	R2
     141 BA2B      OUT	0x1B,R2
(0006)  DDRA  = 0x00;
     142 BA2A      OUT	0x1A,R2
(0007)  PORTB = 0x00;
     143 BA28      OUT	0x18,R2
(0008)  DDRB  = 0x00;
     144 BA27      OUT	0x17,R2
(0009)  PORTC = 0x00; //m103 output only
     145 BA25      OUT	0x15,R2
(0010)  DDRC  = 0x00;
     146 BA24      OUT	0x14,R2
(0011)  PORTD = 0x00;
     147 BA22      OUT	0x12,R2
(0012)  DDRD  = 0x00;
     148 BA21      OUT	0x11,R2
     149 9508      RET
(0013) }
(0014) 
(0015) //UART0 initialize
(0016) // desired baud rate: 9600
(0017) // actual: baud rate:9615 (0.2%)
(0018) void uart0_init(void)
(0019) {
(0020)  UCSRB = 0x00; //disable while setting baud rate
_uart0_init:
     14A 2422      CLR	R2
     14B B82A      OUT	0x0A,R2
(0021)  UCSRA = 0x00;
     14C B82B      OUT	0x0B,R2
(0022)  UCSRC = BIT(URSEL) | 0x06;
     14D E886      LDI	R24,0x86
     14E BD80      OUT	0x20,R24
(0023)  UBRRL = 0x67; //set baud rate lo
     14F E687      LDI	R24,0x67
     150 B989      OUT	0x09,R24
(0024)  UBRRH = 0x00; //set baud rate hi
     151 BC20      OUT	0x20,R2
(0025)  UCSRB = 0x18;
     152 E188      LDI	R24,0x18
     153 B98A      OUT	0x0A,R24
     154 9508      RET
(0026) }
(0027) 
(0028) //call this routine to initialize all peripherals
(0029) void init_devices(void)
(0030) {
(0031)  //stop errant interrupts until set up
(0032)  CLI(); //disable all interrupts
_init_devices:
     155 94F8      BCLR	7
(0033)  port_init();
     156 DFE9      RCALL	_port_init
(0034)  uart0_init();
     157 DFF2      RCALL	_uart0_init
(0035) 
(0036)  MCUCR = 0x00;
     158 2422      CLR	R2
     159 BE25      OUT	0x35,R2
(0037)  GICR  = 0x00;
     15A BE2B      OUT	0x3B,R2
(0038)  TIMSK = 0x00; //timer interrupt sources
     15B BE29      OUT	0x39,R2
(0039)  SEI(); //re-enable interrupts
     15C 9478      BSET	7
     15D 9508      RET
(0040)  //all peripherals are now initialized
(0041) }
(0042) 
(0043) void uart_tx(uchar txc)      //send a uchar data
(0044) {
(0045) while(!(UCSRA&(1<<UDRE)));   //check send enable
_uart_tx:
  txc                  --> R16
     15E 9B5D      SBIS	0x0B,5
     15F CFFE      RJMP	_uart_tx
(0046) UDR=txc;              
     160 B90C      OUT	0x0C,R16
     161 9508      RET
FILE: D:\16实验程序\串口通信\与计算机通信\uart_pc.c
(0001) //串口通信程序
(0002) //向pc串口发送数据
(0003) //pc端使用 超级终端 建立连接
(0004) //9600  8位数据 1位停止
(0005) 
(0006) #include <iom16v.h>
(0007) #include <macros.h>
(0008) #include "uart0.h"
(0009) #define uint unsigned int
(0010) 
(0011) 
(0012) uchar cn_00[]={"北京东控开发板\n\r"};
(0013) uchar cn_01[]={"ATmega16主芯片:16K Flash 1K SRAM 512Byte EEPROM\n\r"};
(0014) uchar cn_02[]={"I2C总线器件24C04,EEPROM数据存储器,4kBit EEPROM\n\r"};
(0015) uchar cn_03[]={"单总线DS18B20温度传感器\n\r"};
(0016) uchar cn_04[]={"RS232接口Max232A,主从接口(可与计算机或其他开发板通信)\n\r"};
(0017) uchar cn_05[]={"20个输入按键、1个复位按键\n\r"};
(0018) uchar cn_06[]={"8位动态扫描LED数码管、8位LED发光二极管\n\r"};
(0019) uchar cn_07[]={"1个无源蜂鸣器\n\r"};
(0020) uchar cn_08[]={"1路A/D输入可调电位器\n\r"};
(0021) uchar cn_09[]={"LCD1602和LCD12864液晶接口\n\r"};
(0022) uchar cn_10[]={"JTAG仿真接口\n\r"};
(0023) uchar cn_11[]={"AVR ISP下载接口\n\r"};
(0024) uchar cn_12[]={"DS1302时钟电路\n\r"};
(0025) uchar cn_13[]={"所有IO口全部引出,方便扩展实验及测试\n\r"};
(0026) 
(0027) 
(0028) ms(uint aa)
(0029) {
(0030) for(;aa>0;aa--);
_ms:
  aa                   --> R16
     162 C002      RJMP	0x0165
     163 5001      SUBI	R16,1
     164 4010      SBCI	R17,0
     165 3000      CPI	R16,0
     166 0701      CPC	R16,R17
     167 F7D9      BNE	0x0163
     168 9508      RET
_write_cn:
  i                    --> R10
  cn_nub               --> R12
  cn                   --> R14
     169 940E 01CB CALL	push_xgset00FC
     16B 2EC2      MOV	R12,R18
     16C 0178      MOVW	R14,R16
(0031) }
(0032) 
(0033) void write_cn(uchar *cn,uchar cn_nub)
(0034) {
(0035) uchar i;
(0036) for(i=0;i<(cn_nub);i++)
     16D 24AA      CLR	R10
     16E C00B      RJMP	0x017A
(0037) 		{
(0038)       		uart_tx(cn[i]);       //发送数据i
     16F 2DEA      MOV	R30,R10
     170 27FF      CLR	R31
     171 0DEE      ADD	R30,R14
     172 1DFF      ADC	R31,R15
     173 8100      LDD	R16,Z+0
     174 DFE9      RCALL	_uart_tx
(0039) 			PORTA=i; 
     175 BAAB      OUT	0x1B,R10
(0040) 			ms(60000);
     176 E600      LDI	R16,0x60
     177 EE1A      LDI	R17,0xEA
     178 DFE9      RCALL	_ms
     179 94A3      INC	R10
     17A 14AC      CP	R10,R12
     17B F398      BCS	0x016F
     17C 940C 01C0 JMP	pop_xgset00FC
(0041) 		}
(0042) }
(0043) 
(0044) //与计算机通信的程序
(0045) //计算机端使用超级终端,建立一个连接,9600,8位,1个停止位
(0046) main()
(0047) {
(0048) uchar i=0,rx_temp;
_main:
  rx_temp              --> Y,+1
  i                    --> R10
     17E 24AA      CLR	R10
(0049) init_devices(); //串行口初始化   
     17F DFD5      RCALL	_init_devices
(0050) 
(0051) DDRA=0xff;
     180 EF8F      LDI	R24,0xFF
     181 BB8A      OUT	0x1A,R24
(0052) PORTA=0x00;
     182 2422      CLR	R2
     183 BA2B      OUT	0x1B,R2
(0053) 
(0054) ms(3000);
     184 EB08      LDI	R16,0xB8
     185 E01B      LDI	R17,0xB
     186 DFDB      RCALL	_ms
(0055) write_cn(cn_00,16);
     187 E120      LDI	R18,0x10
     188 E000      LDI	R16,0
     189 E011      LDI	R17,1
     18A DFDE      RCALL	_write_cn
(0056) write_cn(cn_01,50);
     18B E322      LDI	R18,0x32
     18C E101      LDI	R16,0x11
     18D E011      LDI	R17,1
     18E DFDA      RCALL	_write_cn
(0057) write_cn(cn_02,50);
     18F E322      LDI	R18,0x32
     190 E404      LDI	R16,0x44
     191 E011      LDI	R17,1
     192 DFD6      RCALL	_write_cn
(0058) write_cn(cn_03,25);
     193 E129      LDI	R18,0x19
     194 E707      LDI	R16,0x77
     195 E011      LDI	R17,1
     196 DFD2      RCALL	_write_cn
(0059) write_cn(cn_04,59);
     197 E32B      LDI	R18,0x3B
     198 E901      LDI	R16,0x91
     199 E011      LDI	R17,1
     19A DFCE      RCALL	_write_cn
(0060) write_cn(cn_05,27);
     19B E12B      LDI	R18,0x1B
     19C EC0C      LDI	R16,0xCC
     19D E011      LDI	R17,1
     19E DFCA      RCALL	_write_cn
(0061) write_cn(cn_06,40);
     19F E228      LDI	R18,0x28
     1A0 EE08      LDI	R16,0xE8
     1A1 E011      LDI	R17,1
     1A2 DFC6      RCALL	_write_cn
(0062) write_cn(cn_07,15);
     1A3 E02F      LDI	R18,0xF
     1A4 E101      LDI	R16,0x11
     1A5 E012      LDI	R17,2
     1A6 DFC2      RCALL	_write_cn
(0063) write_cn(cn_08,23);
     1A7 E127      LDI	R18,0x17
     1A8 E201      LDI	R16,0x21
     1A9 E012      LDI	R17,2
     1AA DFBE      RCALL	_write_cn
(0064) write_cn(cn_09,27);
     1AB E12B      LDI	R18,0x1B
     1AC E308      LDI	R16,0x38
     1AD E012      LDI	R17,2
     1AE DFBA      RCALL	_write_cn
(0065) write_cn(cn_10,14);
     1AF E02E      LDI	R18,0xE
     1B0 E504      LDI	R16,0x54
     1B1 E012      LDI	R17,2
     1B2 DFB6      RCALL	_write_cn
(0066) write_cn(cn_11,17);
     1B3 E121      LDI	R18,0x11
     1B4 E603      LDI	R16,0x63
     1B5 E012      LDI	R17,2
     1B6 DFB2      RCALL	_write_cn
(0067) write_cn(cn_12,16);
     1B7 E120      LDI	R18,0x10
     1B8 E705      LDI	R16,0x75
     1B9 E012      LDI	R17,2
     1BA DFAE      RCALL	_write_cn
(0068) write_cn(cn_13,38);
FILE: <library>
     1BB E226      LDI	R18,0x26
     1BC E806      LDI	R16,0x86
     1BD E012      LDI	R17,2
     1BE DFAA      RCALL	_write_cn
     1BF 9508      RET
pop_xgset00FC:
     1C0 90A9      LD	R10,Y+
     1C1 90B9      LD	R11,Y+
     1C2 90C9      LD	R12,Y+
     1C3 90D9      LD	R13,Y+
     1C4 90E9      LD	R14,Y+
     1C5 90F9      LD	R15,Y+
     1C6 9508      RET
push_xgsetF0FC:
     1C7 937A      ST	R23,-Y
     1C8 936A      ST	R22,-Y
push_xgset30FC:
     1C9 935A      ST	R21,-Y
     1CA 934A      ST	R20,-Y
push_xgset00FC:
     1CB 92FA      ST	R15,-Y
     1CC 92EA      ST	R14,-Y
push_xgset003C:
     1CD 92DA      ST	R13,-Y
     1CE 92CA      ST	R12,-Y
     1CF 92BA      ST	R11,-Y
     1D0 92AA      ST	R10,-Y
     1D1 9508      RET

⌨️ 快捷键说明

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