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

📄 main.s

📁 PC通过串口控制LCD1602显示!MCU为AVR单片机!
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module main.c
	.area lit(rom, con, rel)
_table::
	.byte 48,49,50,51,52,53,54,55,56,57,46,'C,32,0
	.dbfile F:\我的设计\delphi\uartdispy\mcu\main.c
	.dbsym e table _table A[14:14]kc
	.area data(ram, con, rel)
	.dbfile F:\我的设计\delphi\uartdispy\mcu\main.c
_i::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\我的设计\delphi\uartdispy\mcu\main.c
	.dbsym e i _i c
_clr::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\我的设计\delphi\uartdispy\mcu\main.c
	.dbsym e clr _clr c
_two::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\我的设计\delphi\uartdispy\mcu\main.c
	.dbsym e two _two c
_end::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\我的设计\delphi\uartdispy\mcu\main.c
	.dbsym e end _end c
_start::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\我的设计\delphi\uartdispy\mcu\main.c
	.dbsym e start _start c
_one::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\我的设计\delphi\uartdispy\mcu\main.c
	.dbsym e one _one c
	.area text(rom, con, rel)
	.dbfile F:\我的设计\delphi\uartdispy\mcu\main.c
	.dbfunc e port_init _port_init fV
	.even
_port_init::
	.dbline -1
	.dbline 42
; /*********************************Copyright (c)*********************************
; **                              
; ** 文   件   名: main.c
; ** 最后修改日期: 2005年06月8日
; ** 描        述: 主函数
; ** 版	     本: V1.0
; ** 主  控  芯 片:M16  晶振频率:8 MHZ
; *******************************************************************************/
; #include <iom16v.h>
; #include <macros.h>
; #include "define.h"
; #include "function.h"
; #include "defineDS18B20.h"
; #include "defineLCD.h"
; #define b9600   0x33
; #define baud   b9600
; #define fone   0x2a
; #define ftwo   0x2b
; #define fclr   0x2d
; #define fend   0x3c
; #define floop  0x3e
; /******************************************************************************
;                   定义全局变量
; *******************************************************************************/
; const unsigned char table[]="0123456789.C "  ;         //显示常量
; unsigned char i=0                            ;         //中断里的计数变量
; char string[18]                              ;         //字符串
; unsigned char  clr   = 0                      ;         //清屏命令标志
; unsigned char  two   = 0                      ;		   //第二行显示标志
; unsigned char   end  = 0						 ;	  // 结束标志
; unsigned char  start = 0                      ;         //接收完成标志
; unsigned char  one   = 0						 ;		   //第一行显示标志
; 
; 
; //void draw(unsigned long int m );
; /*****************************************************************************
;                        函数声明
; ******************************************************************************/
; void puts(unsigned int data );
; void display(void)           ;
; void port_init(void)
; {
	.dbline 43
;  PORTA = 0x00;
	clr R2
	out 0x1b,R2
	.dbline 44
;  DDRA  = 0x00;
	out 0x1a,R2
	.dbline 45
;  PORTB = 0x00;
	out 0x18,R2
	.dbline 46
;  DDRB  = 0x00; 				  			   		 //输出
	out 0x17,R2
	.dbline 47
;  PORTC = 0x00;  								 //m103 output only
	out 0x15,R2
	.dbline 48
;  DDRC  = 0x00;  								 //输出 
	out 0x14,R2
	.dbline 49
;  DDRD  = 0x00;
	out 0x11,R2
	.dbline 50
;  PORTD = 0x00;
	out 0x12,R2
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e getchar _getchar fc
	.even
_getchar::
	.dbline -1
	.dbline 58
; }
; 
; /******************************************************************************
; 
;   		//字符输入函数 
; *******************************************************************************/		 
; unsigned char getchar(void)
;   	{
L3:
	.dbline 59
L4:
	.dbline 59
; 	 while(!(UCSRA& (1<<RXC)));
	sbis 0xb,7
	rjmp L3
	.dbline 60
;      return UDR;
	in R16,0xc
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 44
	jmp _uart0_rx_isr
	.area text(rom, con, rel)
	.dbfile F:\我的设计\delphi\uartdispy\mcu\main.c
	.dbfunc e uart0_rx_isr _uart0_rx_isr fV
	.even
_uart0_rx_isr::
	st -y,R2
	st -y,R16
	st -y,R17
	st -y,R24
	st -y,R25
	st -y,R30
	st -y,R31
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 69
; 	}
; 	
; 	
; /*******************************************************************************
;         串行口接收中断
; *******************************************************************************/	
; #pragma interrupt_handler uart0_rx_isr:12
; void uart0_rx_isr(void)
; {
	.dbline 70
;  string[i]= UDR ;
	ldi R24,<_string
	ldi R25,>_string
	lds R30,_i
	clr R31
	add R30,R24
	adc R31,R25
	in R2,0xc
	std z+0,R2
	.dbline 71
;  if(i==0)
	lds R2,_i
	tst R2
	brne L7
	.dbline 72
;   {switch (string[0])
	.dbline 72
	lds R16,_string
	clr R17
	cpi R16,42
	ldi R30,0
	cpc R17,R30
	breq L12
	cpi R16,43
	ldi R30,0
	cpc R17,R30
	breq L13
	cpi R16,45
	ldi R30,0
	cpc R17,R30
	breq L14
	xjmp L8
X0:
	.dbline 73
;    {
L12:
	.dbline 74
;     case fone : {one=1;two=0;i++;}break;
	.dbline 74
	ldi R24,1
	sts _one,R24
	.dbline 74
	clr R2
	sts _two,R2
	.dbline 74
	lds R24,_i
	subi R24,255    ; addi 1
	sts _i,R24
	.dbline 74
	.dbline 74
	xjmp L8
L13:
	.dbline 75
; 	case ftwo : {two=1;one=0;i++;}break;
	.dbline 75
	ldi R24,1
	sts _two,R24
	.dbline 75
	clr R2
	sts _one,R2
	.dbline 75
	lds R24,_i
	subi R24,255    ; addi 1
	sts _i,R24
	.dbline 75
	.dbline 75
	xjmp L8
L14:
	.dbline 76
; 	case fclr : {clr=1;i=0;}      break;
	.dbline 76
	ldi R24,1
	sts _clr,R24
	.dbline 76
	clr R2
	sts _i,R2
	.dbline 76
	.dbline 76
	.dbline 77
; 	default:                      break ;
	.dbline 79
; 	}
; 	}
	xjmp L8
L7:
	.dbline 80
;  else if (string[i]==fend) {end=i-1;start=1;}
	ldi R24,<_string
	ldi R25,>_string
	lds R30,_i
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,60
	brne L15
	.dbline 80
	.dbline 80
	lds R24,_i
	subi R24,1
	sts _end,R24
	.dbline 80
	ldi R24,1
	sts _start,R24
	.dbline 80
	xjmp L16
L15:
	.dbline 82
;  
;  else i++;
	lds R24,_i
	subi R24,255    ; addi 1
	sts _i,R24
L16:
L8:
	.dbline -2
L6:
	ld R2,y+
	out 0x3f,R2
	ld R31,y+
	ld R30,y+
	ld R25,y+
	ld R24,y+
	ld R17,y+
	ld R16,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e ad_1 _ad_1 fi
;          value -> R16,R17
	.even
_ad_1::
	.dbline -1
	.dbline 95
; 
; }
; 
; /******************************************************************************
; 函数名称:1号通道采集函数
; 函数功能:返回采集一次的模拟量
; 函数参数:无
; 返回值 : 16 位型 ,变量
; 
; ******************************************************************************/
; 
; unsigned int ad_1(void)       //ad0采集函数,返回ad0的值
;  {
	.dbline 97
;   unsigned int value;
;   ADMUX=0xc1;
	ldi R24,193
	out 0x7,R24
	.dbline 98
;   ADCSR=0x86;
	ldi R24,134
	out 0x6,R24
	.dbline 99
;   BIT_SET(ADCSR,ADSC);
	sbi 0x6,6
L18:
	.dbline 100
L19:
	.dbline 100
;   while(ADCSR & (1<<ADSC));   //waitting ADC complete 
	sbic 0x6,6
	rjmp L18
	.dbline 101
;   value=ADCL;                 //Read 8 low bits first (important) 
	in R16,0x4
	clr R17
	.dbline 102
;   value|=( int)ADCH << 8;      //read 2 high bits and shift into top byte 
	in R2,0x5
	clr R3
	mov R3,R2
	clr R2
	or R16,R2
	or R17,R3
	.dbline 103
;   return(value);
	.dbline -2
L17:
	.dbline 0 ; func end
	ret
	.dbsym r value 16 i
	.dbend
	.dbfunc e main _main fV
;           temp -> <dead>
;          vdata -> R10,R11
;           data -> R12,R13
;              m -> y+0
	.even
_main::
	sbiw R28,4
	.dbline -1
	.dbline 109
;   }
; 
;   
;  
; void main(void)
; {    
	.dbline 113
; /*****************************************************************************
;                                变量定义
; *******************************************************************************/     
; 	 unsigned long int  m=0         ;             //温度采集后的值

⌨️ 快捷键说明

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