单片机开发资料光盘-双龙-686M.zip

源代码在线查看: uart.s

软件大小: 574027 K
上传用户: rllfllef
关键词: 686 zip 单片机 光盘
下载地址: 免注册下载 普通下载 VIP

相关代码

					.module uart.c
					.area text(rom, con, rel)
					.dbfile E:\icc\iccavr\mega8\mega8\RTC\uart.c
					.dbfunc e putchar _putchar fV
				;              c -> R16
					.even
				_putchar::
					.dbline -1
					.dbline 20
				; /******************************************/
				; /*           广州天河双龙电子公司         */
				; /*           http://www.sl.com.cn         */ 
				; /*              RS232通信驱动程序         */
				; /*             作者:ntzwq@wx88.net        */
				; /*               2002年5月11日            */
				; /*  目标MCU:MEGA8   晶振:外部(EXT) 8MHZ   */
				; /******************************************/
				; //  1、使用ICCAVR的终端调试窗口(Terminal),进行通信调试。
				; //  2、对ICCAVR的终端调试窗口进行设置,设置串口为com1或com2,
				; //     通信波特率为19200(Tools->Environment Options...)。
				; //  3、将PC屏幕光标定位于调试窗口中。
				; #include 
				; #define fosc 8000000 //晶振8MHZ
				; #define baud 19200	 //波特率
				; #define osc_address   0x1ff0
				; extern unsigned char read_flash(unsigned int add);
				; /*  		字符输出函数 		 */
				; void putchar(unsigned char c)
				; 	{	 
				L2:
					.dbline 21
				L3:
					.dbline 21
				;      while (!(UCSRA&(1					sbis 0xb,5
					rjmp L2
					.dbline 22
				; 	 UDR=c;    
					out 0xc,R16
					.dbline -2
					.dbline 23
				; 	}
				L1:
					.dbline 0 ; func end
					ret
					.dbsym r c 16 c
					.dbend
					.dbfunc e getchar _getchar fc
					.even
				_getchar::
					.dbline -1
					.dbline 26
				; /*  		字符输入函数 		 */	
				; unsigned char getchar(void)
				;   	{
				L6:
					.dbline 27
				L7:
					.dbline 27
				; 	 while(!(UCSRA& (1					sbis 0xb,7
					rjmp L6
					.dbline 28
				;      return UDR;
					in R16,0xc
					.dbline -2
				L5:
					.dbline 0 ; func end
					ret
					.dbend
					.dbfunc e puts _puts fV
				;              s -> R20,R21
					.even
				_puts::
					rcall push_gset1
					movw R20,R16
					.dbline -1
					.dbline 32
				; 	}		
				; /*			字符串输出函数	   	 */	
				; void puts(char *s)
				; 	{
					rjmp L11
				L10:
					.dbline 34
					.dbline 35
					movw R30,R20
					ldd R16,z+0
					rcall _putchar
					.dbline 36
					subi R20,255  ; offset = 1
					sbci R21,255
					.dbline 37
				L11:
					.dbline 33
				; 	while (*s)
					movw R30,R20
					ldd R2,z+0
					tst R2
					brne L10
					.dbline 38
				; 		{
				; 		putchar(*s);
				; 		s++;
				; 		}	
				;     putchar(0x0a);//回车换行
					ldi R16,10
					rcall _putchar
					.dbline 39
				; 	putchar(0x0d);
					ldi R16,13
					rcall _putchar
					.dbline -2
					.dbline 40
				; 	}
				L9:
					rcall pop_gset1
					.dbline 0 ; func end
					ret
					.dbsym r s 20 pc
					.dbend
					.dbfunc e uart_init _uart_init fV
					.even
				_uart_init::
					.dbline -1
					.dbline 43
				; /*			UART初始化				*/	
				; void uart_init(void)
				; {
					.dbline 44
				;  OSCCAL=read_flash(osc_address);
					ldi R16,8176
					ldi R17,31
					rcall _read_flash
					out 0x31,R16
					.dbline 45
				;  UCSRB=(1					ldi R24,152
					out 0xa,R24
					.dbline 46
				;  UBRRL=(fosc/16/(baud+1))%256;
					ldi R24,26
					out 0x9,R24
					.dbline 47
				;  UBRRH=(fosc/16/(baud+1))/256;
					clr R2
					out 0x20,R2
					.dbline 48
				;  UCSRC=(1					ldi R24,134
					out 0x20,R24
					.dbline -2
					.dbline 49
				; }
				L13:
					.dbline 0 ; func end
					ret
					.dbend
							

相关资源