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

📄 uart.lst

📁 单片机开发资料光盘-双龙-686M.zip
💻 LST
字号:
__start:
__text_start:
    0043 E5CF      LDI	R28,0x5F
    0044 E0D4      LDI	R29,4
    0045 BFCD      OUT	0x3D,R28
    0046 BFDE      OUT	0x3E,R29
    0047 51C0      SUBI	R28,0x10
    0048 40D0      SBCI	R29,0
    0049 EA0A      LDI	R16,0xAA
    004A 8308      STD	Y+0,R16
    004B 2400      CLR	R0
    004C EBEF      LDI	R30,0xBF
    004D E0F0      LDI	R31,0
    004E E010      LDI	R17,0
    004F 3BEF      CPI	R30,0xBF
    0050 07F1      CPC	R31,R17
    0051 F011      BEQ	0x0054
    0052 9201      ST	R0,Z+
    0053 CFFB      RJMP	0x004F
    0054 8300      STD	Z+0,R16
    0055 E2E6      LDI	R30,0x26
    0056 E0F0      LDI	R31,0
    0057 E6A0      LDI	R26,0x60
    0058 E0B0      LDI	R27,0
    0059 E010      LDI	R17,0
    005A 38E5      CPI	R30,0x85
    005B 07F1      CPC	R31,R17
    005C F021      BEQ	0x0061
    005D 95C8      LPM
    005E 9631      ADIW	R30,1
    005F 920D      ST	R0,X+
    0060 CFF9      RJMP	0x005A
    0061 D038      RCALL	_main
_exit:
    0062 CFFF      RJMP	_exit
FILE: E:\icc\iccavr\mega8\mega8\uart\uart.c
(0001) /******************************************/
(0002) /*           广州天河双龙电子公司         */
(0003) /*           http://www.sl.com.cn         */ 
(0004) /*              RS232通信演示程序         */ 
(0005) /*             作者:ntzwq@wx88.net        */
(0006) /*               2002年5月10日            */
(0007) /*  目标MCU:MEGA8   晶振:外部(EXT) 8MHZ   */
(0008) /******************************************/
(0009) //  1、使用ICCAVR的终端调试窗口(Terminal),进行通信调试。
(0010) //  2、对ICCAVR的终端调试窗口进行设置,设置串口为com1或com2,
(0011) //     通信波特率为19200(Tools->Environment Options...)。
(0012) //  3、将PC屏幕光标定位于调试窗口中。
(0013) #include <iom8v.h>
(0014) #define fosc 8000000 //晶振8MHZ
(0015) #define baud 19200	 //波特率
(0016) #define osc_address   0x1ff0
(0017) extern unsigned char read_flash(unsigned int add);
(0018) /*  		字符输出函数 		 */
(0019) void putchar(unsigned char c)
(0020) 	{	 
(0021)      while (!(UCSRA&(1<<UDRE)));
_putchar:
  c                    --> R16
    0063 9B5D      SBIS	0x0B,5
    0064 CFFE      RJMP	_putchar
(0022) 	 UDR=c;    
    0065 B90C      OUT	0x0C,R16
(0023) 	}
    0066 9508      RET
(0024) /*  		字符输入函数 		 */	
(0025) unsigned char getchar(void)
(0026)   	{
(0027) 	 while(!(UCSRA& (1<<RXC)));
_getchar:
    0067 9B5F      SBIS	0x0B,7
    0068 CFFE      RJMP	_getchar
(0028)      return UDR;
    0069 B10C      IN	R16,0x0C
    006A 9508      RET
_puts:
  s                    --> R20
    006B D05A      RCALL	push_gset1
    006C 01A8      MOVW	R20,R16
(0029) 	}		
(0030) /*			字符串输出函数	   	 */	
(0031) int puts(char *s)
(0032) 	{
    006D C005      RJMP	0x0073
(0033) 	while (*s)
(0034) 		{
(0035) 		putchar(*s);
    006E 01FA      MOVW	R30,R20
    006F 8100      LDD	R16,Z+0
    0070 DFF2      RCALL	_putchar
(0036) 		s++;
    0071 5F4F      SUBI	R20,0xFF
    0072 4F5F      SBCI	R21,0xFF
    0073 01FA      MOVW	R30,R20
    0074 8020      LDD	R2,Z+0
    0075 2022      TST	R2
    0076 F7B9      BNE	0x006E
(0037) 		}	
(0038)     putchar(0x0a);//回车换行
    0077 E00A      LDI	R16,0xA
    0078 DFEA      RCALL	_putchar
(0039) 	putchar(0x0d);
    0079 E00D      LDI	R16,0xD
    007A DFE8      RCALL	_putchar
(0040) 	return 1;
    007B E001      LDI	R16,1
    007C E010      LDI	R17,0
    007D D04B      RCALL	pop_gset1
    007E 9508      RET
_putstr:
  s                    --> R20
    007F D046      RCALL	push_gset1
    0080 01A8      MOVW	R20,R16
(0041) 	}
(0042) /*	 	   不含回车换行的字符串输出函数 	 */	
(0043) void putstr(char *s)
(0044) 	{
    0081 C005      RJMP	0x0087
(0045) 	while (*s)
(0046) 		{
(0047) 		putchar(*s);
    0082 01FA      MOVW	R30,R20
    0083 8100      LDD	R16,Z+0
    0084 DFDE      RCALL	_putchar
(0048) 		s++;
    0085 5F4F      SUBI	R20,0xFF
    0086 4F5F      SBCI	R21,0xFF
    0087 01FA      MOVW	R30,R20
    0088 8020      LDD	R2,Z+0
    0089 2022      TST	R2
    008A F7B9      BNE	0x0082
(0049) 		}	
(0050) 	}	
    008B D03D      RCALL	pop_gset1
    008C 9508      RET
(0051) /*			UART初始化				*/	
(0052) void uart_init(void)
(0053) {
(0054)  OSCCAL=read_flash(osc_address);
_uart_init:
    008D EF00      LDI	R16,0xF0
    008E E11F      LDI	R17,0x1F
    008F D031      RCALL	_read_flash
    0090 BF01      OUT	0x31,R16
(0055)  UCSRB=(1<<RXEN)|(1<<TXEN);//允许发送和接收
    0091 E188      LDI	R24,0x18
    0092 B98A      OUT	0x0A,R24
(0056)  UBRRL=(fosc/16/(baud+1))%256;
    0093 E18A      LDI	R24,0x1A
    0094 B989      OUT	0x09,R24
(0057)  UBRRH=(fosc/16/(baud+1))/256;
    0095 2422      CLR	R2
    0096 BC20      OUT	0x20,R2
(0058)  UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);//8位数据+1位STOP位
    0097 E886      LDI	R24,0x86
    0098 BD80      OUT	0x20,R24
(0059) }
    0099 9508      RET
(0060) /*			RS232通信main函数		*/
(0061) void main(void)
(0062) {
(0063)  unsigned char i;
(0064)  uart_init();
_main:
  i                    --> R20
    009A DFF2      RCALL	_uart_init
(0065)  puts("广州天河双龙电子公司RS232通信演示程序");
    009B E909      LDI	R16,0x99
    009C E010      LDI	R17,0
    009D DFCD      RCALL	_puts
(0066)  puts("HTTP://WWW.SL.COM.CN");
    009E E804      LDI	R16,0x84
    009F E010      LDI	R17,0
    00A0 DFCA      RCALL	_puts
(0067)  puts("MAIL TO:sllg@sl.com.cn");
    00A1 E60D      LDI	R16,0x6D
    00A2 E010      LDI	R17,0
    00A3 DFC7      RCALL	_puts
    00A4 C01A      RJMP	0x00BF
(0068)  while(1)
(0069)     {
(0070) 	 i=getchar();
    00A5 DFC1      RCALL	_getchar
    00A6 2F40      MOV	R20,R16
(0071) 	 if (i!=0)//按PC键盘开始测试
    00A7 2300      TST	R16
    00A8 F0B1      BEQ	0x00BF
(0072) 	   {
(0073) 	    putstr("当前按键是:");
    00A9 E600      LDI	R16,0x60
    00AA E010      LDI	R17,0
    00AB DFD3      RCALL	_putstr
(0074) 		putchar(i);
    00AC 2F04      MOV	R16,R20
    00AD DFB5      RCALL	_putchar
(0075) 		putchar(0x0a);
    00AE E00A      LDI	R16,0xA
    00AF DFB3      RCALL	_putchar
(0076) 		putchar(0x0d);
    00B0 E00D      LDI	R16,0xD
    00B1 DFB1      RCALL	_putchar
(0077) 	    puts("广州天河双龙电子公司RS232通信演示程序");
    00B2 E909      LDI	R16,0x99
    00B3 E010      LDI	R17,0
    00B4 DFB6      RCALL	_puts
(0078)  		puts("HTTP://WWW.SL.COM.CN");
    00B5 E804      LDI	R16,0x84
    00B6 E010      LDI	R17,0
    00B7 DFB3      RCALL	_puts
(0079)   		puts("MAIL TO:sllg@sl.com.cn");
    00B8 E60D      LDI	R16,0x6D
    00B9 E010      LDI	R17,0
    00BA DFB0      RCALL	_puts
(0080) 		putchar(0x0a);
    00BB E00A      LDI	R16,0xA
    00BC DFA6      RCALL	_putchar
(0081) 		putchar(0x0d); 
    00BD E00D      LDI	R16,0xD
    00BE DFA4      RCALL	_putchar
    00BF CFE5      RJMP	0x00A5
(0082) 	   }	 
(0083) 	}
(0084) }
    00C0 9508      RET
FILE: E:\icc\iccavr\mega8\mega8\uart\read_flash.s
(0001) ;unsigned char read_flash(unsigned int add);
(0002) _read_flash::
(0003)         mov r31,r17
_read_flash:
    00C1 2FF1      MOV	R31,R17
(0004) 		mov r30,r16 
    00C2 2FE0      MOV	R30,R16
(0005) 		lpm r16,z 
    00C3 9104      LPM	R16,0(Z)
(0006) 		clr r17
    00C4 2711      CLR	R17
(0007) 		ret	
FILE: <library>
    00C5 9508      RET
push_gset1:
    00C6 935A      ST	R21,-Y
    00C7 934A      ST	R20,-Y
    00C8 9508      RET
pop_gset1:
    00C9 E0E1      LDI	R30,1
pop:
    00CA 9149      LD	R20,Y+
    00CB 9159      LD	R21,Y+
    00CC FDE0      SBRC	R30,0
    00CD 9508      RET
    00CE 9169      LD	R22,Y+
    00CF 9179      LD	R23,Y+
    00D0 FDE1      SBRC	R30,1
    00D1 9508      RET
    00D2 90A9      LD	R10,Y+
    00D3 90B9      LD	R11,Y+
    00D4 FDE2      SBRC	R30,2
    00D5 9508      RET
    00D6 90C9      LD	R12,Y+
    00D7 90D9      LD	R13,Y+
    00D8 FDE3      SBRC	R30,3
    00D9 9508      RET
    00DA 90E9      LD	R14,Y+
    00DB 90F9      LD	R15,Y+
    00DC 9508      RET

⌨️ 快捷键说明

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