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

📄 main.s

📁 一个关于AVR单片机的例程
💻 S
字号:
	.module main.c
	.area text(rom, con, rel)
	.dbfile D:\桌面\ds18b20\main.c
	.dbfunc e USART_Init _USART_Init fV
;            tmp -> R10,R11
;           baud -> R10,R11
	.even
_USART_Init::
	xcall push_gset3
	movw R10,R16
	.dbline -1
	.dbline 20
; /****************************************Copyright (c)**************************************************
; **                                杭 州 鑫 高 科 技 有 限 公 司
; **                                     开	发	部
; **                                 http://www.hzxingao.com
; ** 文   件   名: main.c
; ** 最后修改日期: 2005年05月11日
; ** 描        述: 
; ** 版	     本: V1.0
; ** 主  控  芯 片:M16  晶振频率:7.3728MHZ, 波特率19200
; **********************************************************************************************************/
; #include <iom16v.h>
; #include <macros.h>
; #include "define.h"
; #include "function.h"
; #include "para.h"
; 
; #define F_CPU 7372800
; 
; void USART_Init( unsigned int baud )
; {
	.dbline 23
; unsigned int tmp;
; /* 设置波特率*/
; tmp= F_CPU/baud/16-1;
	movw R2,R10
	clr R4
	clr R5
	ldi R20,0
	ldi R21,128
	ldi R22,112
	ldi R23,0
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R20
	movw R18,R22
	xcall div32s
	ldi R20,16
	ldi R21,0
	ldi R22,0
	ldi R23,0
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	xcall div32s
	movw R2,R16
	movw R4,R18
	ldi R20,1
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sub R2,R20
	sbc R3,R21
	sbc R4,R22
	sbc R5,R23
	movw R10,R2
	.dbline 24
; UBRRH = (unsigned char)(tmp>>8);
	mov R2,R3
	clr R3
	out 0x20,R2
	.dbline 25
; UBRRL = (unsigned char)tmp;
	out 0x9,R10
	.dbline 27
; /* 接收器与发送器使能*/
; UCSRB = (1<<RXEN)|(1<<TXEN);
	ldi R24,24
	out 0xa,R24
	.dbline 29
; /* 设置帧格式: 8 个数据位, 2 个停止位*/
; UCSRC = (1<<URSEL)|(1<<USBS)|(1<<UCSZ0)|(1<<UCSZ1);
	ldi R24,142
	out 0x20,R24
	.dbline -2
L1:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r tmp 10 i
	.dbsym r baud 10 i
	.dbend
	.dbfunc e USART_Transmit _USART_Transmit fV
;           data -> R16
	.even
_USART_Transmit::
	.dbline -1
	.dbline 34
; }
; 
; // 数据发送【发送5 到8 位数据位的帧】
; void USART_Transmit( unsigned char data )
; {
L3:
	.dbline 37
L4:
	.dbline 36
; /* 等待发送缓冲器为空 */
; while ( !( UCSRA & (1<<UDRE)) )
	sbis 0xb,5
	rjmp L3
	.dbline 39
; ;
; /* 将数据放入缓冲器,发送数据 */
; UDR = data;
	out 0xc,R16
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbsym r data 16 c
	.dbend
	.dbfunc e delay _delay fV
;              i -> R20,R21
	.even
_delay::
	xcall push_gset1
	.dbline -1
	.dbline 44
; } 
; 
; 
; void delay(void)
; {
	.dbline 46
;  unsigned int i;
;  for(i=1255;i!=0;i--)
	ldi R20,1255
	ldi R21,4
	xjmp L10
L7:
	.dbline 47
	ldi R16,255
	xcall _delayUs
L8:
	.dbline 46
	subi R20,1
	sbci R21,0
L10:
	.dbline 46
	cpi R20,0
	cpc R20,R21
	brne L7
X0:
	.dbline -2
L6:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbend
	.dbfunc e main _main fV
;           temp -> R20
	.even
_main::
	.dbline -1
	.dbline 54
;   delayUs(255);
; }
; 
; 
; WORD i;
; 
; void main()
; {
	.dbline 56
; 
;    unsigned char temp=0;
	clr R20
	.dbline 58
; 
; 	port_init();
	xcall _port_init
	.dbline 60
; 	
; 	USART_Init(9600); //波特率9600 初始化串口
	ldi R16,9600
	ldi R17,37
	xcall _USART_Init
	.dbline 61
; 	USART_Transmit('O');
	ldi R16,79
	xcall _USART_Transmit
	.dbline 62
; 	USART_Transmit('K');
	ldi R16,75
	xcall _USART_Transmit
	xjmp L13
L12:
	.dbline 65
; 
; 	while(1)
; 	{
	.dbline 66
; 	 USART_Transmit(0x0d); //发送一个回车
	ldi R16,13
	xcall _USART_Transmit
	.dbline 67
;  	 USART_Transmit(0x0a); //发送一个换行
	ldi R16,10
	xcall _USART_Transmit
	.dbline 68
; 	 i=resetDS18B20();
	xcall _resetDS18B20
	mov R2,R16
	clr R3
	sts _i+1,R3
	sts _i,R2
	.dbline 69
; 	 i=readTempDS18B20();
	xcall _readTempDS18B20
	sts _i+1,R17
	sts _i,R16
	.dbline 70
; 	 if(i&(1<<3)) //判断倒数第四位是1还是0 
	sbrs R16,3
	rjmp L15
	.dbline 71
; 	 {
	.dbline 72
; 	  temp=i>>4+1;
	ldi R18,5
	ldi R19,0
	xcall lsr16
	mov R20,R16
	.dbline 73
; 	 }
	xjmp L16
L15:
	.dbline 75
; 	 else
; 	 {
	.dbline 76
; 	  temp=i>>4;
	lds R20,_i
	lds R21,_i+1
	lsr R21
	ror R20
	lsr R21
	ror R20
	lsr R21
	ror R20
	lsr R21
	ror R20
	.dbline 77
; 	 }
L16:
	.dbline 78
	mov R16,R20
	xcall _USART_Transmit
	.dbline 79
	xcall _delay
	.dbline 80
L13:
	.dbline 64
	xjmp L12
X1:
	.dbline -2
L11:
	.dbline 0 ; func end
	ret
	.dbsym r temp 20 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile D:\桌面\ds18b20\main.c
_i::
	.blkb 2
	.dbsym e i _i i

⌨️ 快捷键说明

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