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

📄 main.lst

📁 avr单片机操作温度传感器18B20的软件含仿真。
💻 LST
📖 第 1 页 / 共 5 页
字号:
 756               	/* function put_char size 15 (12) */
 758               	.Lscope10:
 760               	.global	get_char
 762               	get_char:
  31:usart.h       **** 
  32:usart.h       **** //标准I/O输入函数
  33:usart.h       **** int get_char(void)
  34:usart.h       **** {
 764               	.LM93:
 765               	/* prologue: frame size=0 */
 766               	/* prologue end (size=0) */
 767               	.L80:
  35:usart.h       **** while(!(UCSRA &(1<<RXC)));
 769               	.LM94:
 770 01b2 5F9B      		sbis 43-0x20,7
 771 01b4 FECF      		rjmp .L80
  36:usart.h       **** return UDR;
 773               	.LM95:
 774 01b6 8CB1      		in r24,44-0x20
  37:usart.h       **** 
  38:usart.h       **** }
 776               	.LM96:
 777 01b8 9927      		clr r25
 778               	/* epilogue: frame size=0 */
 779 01ba 0895      		ret
 780               	/* epilogue end (size=1) */
 781               	/* function get_char size 5 (4) */
 783               	.Lscope11:
 787               	.global	send_nbyte
 789               	send_nbyte:
  39:usart.h       **** 
  40:usart.h       **** 
  41:usart.h       **** //发送指定长度的字符串
  42:usart.h       **** void send_nbyte(unsigned char *p,unsigned char L)
  43:usart.h       **** {
 791               	.LM97:
 792               	/* prologue: frame size=0 */
 793 01bc 0F93      		push r16
 794 01be 1F93      		push r17
 795 01c0 CF93      		push r28
 796               	/* prologue end (size=3) */
  44:usart.h       ****     unsigned char w;
  45:usart.h       ****     for(w=0;w<L;w++)
 798               	.LM98:
 799 01c2 6623      		tst r22
 800 01c4 49F0      		breq .L89
 801 01c6 8C01      		movw r16,r24
 802 01c8 C62F      		mov r28,r22
 803               	.L87:
  46:usart.h       ****     {
  47:usart.h       ****        // UDR = *(p+w);
  48:usart.h       ****        // while(!(UCSRA &(1<<UDRE)));
  49:usart.h       ****         //UCSRA |= (1<<UDRE);
  50:usart.h       ****         put_char(*(p+w));
 805               	.LM99:
 806 01ca F801      		movw r30,r16
 807 01cc 8191      		ld r24,Z+
 808 01ce 8F01      		movw r16,r30
 809 01d0 0E94 0000 		call put_char
 811               	.LM100:
 812 01d4 C150      		subi r28,lo8(-(-1))
 813 01d6 C9F7      		brne .L87
 814               	.L89:
 815               	/* epilogue: frame size=0 */
 816 01d8 CF91      		pop r28
 817 01da 1F91      		pop r17
 818 01dc 0F91      		pop r16
 819 01de 0895      		ret
 820               	/* epilogue end (size=4) */
 821               	/* function send_nbyte size 19 (12) */
 826               	.Lscope12:
 829               	.global	put_str
 831               	put_str:
  51:usart.h       ****     }
  52:usart.h       **** 
  53:usart.h       **** }
  54:usart.h       **** //发送字符串
  55:usart.h       **** void put_str(unsigned char *Str)
  56:usart.h       **** {
 833               	.LM101:
 834               	/* prologue: frame size=0 */
 835 01e0 CF93      		push r28
 836 01e2 DF93      		push r29
 837               	/* prologue end (size=2) */
 838 01e4 EC01      		movw r28,r24
  57:usart.h       ****     while(*Str != '\0')
  58:usart.h       ****     {
  59:usart.h       ****         put_char(*Str);
  60:usart.h       ****         Str++;
 840               	.LM102:
 841 01e6 8881      		ld r24,Y
 842 01e8 8823      		tst r24
 843 01ea 31F0      		breq .L95
 844               	.L93:
 846               	.LM103:
 847 01ec 8991      		ld r24,Y+
 848 01ee 0E94 0000 		call put_char
 850               	.LM104:
 851 01f2 8881      		ld r24,Y
 852 01f4 8823      		tst r24
 853 01f6 D1F7      		brne .L93
 854               	.L95:
 855               	/* epilogue: frame size=0 */
 856 01f8 DF91      		pop r29
 857 01fa CF91      		pop r28
 858 01fc 0895      		ret
 859               	/* epilogue end (size=3) */
 860               	/* function put_str size 15 (10) */
 862               	.Lscope13:
 865               	.global	LCD_Write_half_char
 867               	LCD_Write_half_char:
 869               	.Ltext22:
   1:lcd1602.h     **** /***********************************************************************
   2:lcd1602.h     **** *GCC-AVR application builder : 20050214(VERSION)					   *
   3:lcd1602.h     **** *Target : M16													   	   *
   4:lcd1602.h     **** *Crystal: 8.0000Mhz													   *
   5:lcd1602.h     **** ************************************************************************
   6:lcd1602.h     **** *Copyright (C), 2000-3000, Jianfeng Tech. Co., Ltd.					   *
   7:lcd1602.h     **** *FileName:      1602.c												   *
   8:lcd1602.h     **** *Author:        Jeff Zhang											   *
   9:lcd1602.h     **** *Version :      0.0													   *
  10:lcd1602.h     **** *Date:          2006/04/13											   *
  11:lcd1602.h     **** *Description:   display on 1602						   *
  12:lcd1602.h     **** ************************************************************************    
  13:lcd1602.h     **** *Function List:														   *
  14:lcd1602.h     **** *void LCD_init         		(void);
  15:lcd1602.h     **** *void LCD_INIT(void);
  16:lcd1602.h     **** *void LCD_write_char         (unsigned command,unsigned data);
  17:lcd1602.h     **** *void LCD_Write_half_char    (unsigned data_in);
  18:lcd1602.h     **** *void LCD_set_xy             (unsigned char x, unsigned char y);
  19:lcd1602.h     **** *X为起始位置,0就是从左第一个位置开始。Y是起使行的位置,0为第一行,1为第2行。
  20:lcd1602.h     **** *void LCD_write_string       (unsigned char X,unsigned char Y,unsigned char *s);
  21:lcd1602.h     **** *void DELAY_nus              (unsigned int n);
  22:lcd1602.h     **** *void DELAY_nms              (unsigned int n);
  23:lcd1602.h     **** ************************************************************************
  24:lcd1602.h     **** *History:        none                                                  *
  25:lcd1602.h     **** *<author>  <time>   <version >   <desc>                                *
  26:lcd1602.h     **** *---        ---       ---         ---                                  *
  27:lcd1602.h     **** ***********************************************************************/
  28:lcd1602.h     **** //#include <macros.h>
  29:lcd1602.h     **** #include <avr/io.h>
  30:lcd1602.h     **** //定义MCU与LCD的接口
  31:lcd1602.h     **** #define LCD_EN_PORT    PORTA
  32:lcd1602.h     **** #define LCD_RS_PORT    PORTA
  33:lcd1602.h     **** #define LCD_EN_RS_DDR   DDRA
  34:lcd1602.h     **** #define LCD_DATA_PORT  PORTB
  35:lcd1602.h     **** #define LCD_DATA_DDR   DDRB
  36:lcd1602.h     **** #define LCD_DATA_PIN   PINB
  37:lcd1602.h     **** 
  38:lcd1602.h     **** #define LCD_EN         0x20   //porta5         out
  39:lcd1602.h     **** #define LCD_RS         0x10   //porta4         out
  40:lcd1602.h     **** #define LCD_DATA       0xf0   //portb4/5/6/7   out
  41:lcd1602.h     **** 
  42:lcd1602.h     **** //unsigned char data_temp=0x00;
  43:lcd1602.h     **** 
  44:lcd1602.h     **** /*-------------------------------------------------------------------------------------------------
  45:lcd1602.h     **** Public function prototypes
  46:lcd1602.h     **** --------------------------------------------------------------------------------------------------*
  47:lcd1602.h     **** void LCD_init(void);
  48:lcd1602.h     **** void LCD_clr(void);
  49:lcd1602.h     **** void LCD_write_char         (unsigned command,unsigned data);
  50:lcd1602.h     **** void LCD_Write_half_char    (unsigned data_in);
  51:lcd1602.h     **** void LCD_set_xy             (unsigned char x, unsigned char y);
  52:lcd1602.h     **** //X为起始位置,0就是从左第一个位置开始。Y是起使行的位置,0为第一行,1为第2行。
  53:lcd1602.h     **** void LCD_write_string       (unsigned char X,unsigned char Y,unsigned char *s);
  54:lcd1602.h     **** /**********************************************************
  55:lcd1602.h     **** 光标命令
  56:lcd1602.h     **** LCD_write_char(0x0e,0);    //光标开
  57:lcd1602.h     **** LCD_write_char(0x0d,0);    //光标所在字符闪烁  
  58:lcd1602.h     **** LCD_write_char(0x0c,0);    //光标关  
  59:lcd1602.h     **** **********************************************************/
  60:lcd1602.h     **** /**********************************************************
  61:lcd1602.h     **** TC1602B LCD DISPLAY
  62:lcd1602.h     **** 建立时间:2003年11月9号
  63:lcd1602.h     **** 修改日期:2003年11月14号
  64:lcd1602.h     **** LCD_write函数功能:当command=0时,向LCD写入数据,否则向LCD写
  65:lcd1602.h     ****                    入命令
  66:lcd1602.h     **** LCD第一行显示寄存器地址:0X80-0X8F
  67:lcd1602.h     **** LCD第二行显示寄存器地址:0XC0-0XCF
  68:lcd1602.h     **** **********************************************************/
  69:lcd1602.h     **** 
  70:lcd1602.h     **** void LCD_init(void)
  71:lcd1602.h     ****   {   
  72:lcd1602.h     **** 	LCD_DATA_DDR |= LCD_DATA;
  73:lcd1602.h     **** 	LCD_EN_RS_DDR |= LCD_RS | LCD_EN;
  74:lcd1602.h     **** 	LCD_DATA_PORT = 0x20;//不知道什么意思
  75:lcd1602.h     **** 	LCD_EN_PORT |= LCD_EN; // Write data to LCD
  76:lcd1602.h     **** 	DELAY_nus(1);
  77:lcd1602.h     **** 	LCD_EN_PORT &= ~LCD_EN;// Disable LCD
  78:lcd1602.h     **** 	DELAY_nus(40);
  79:lcd1602.h     ****     LCD_write_char(0,0x28);      //4bit test写命令//0X38为8位数据
  80:lcd1602.h     ****     LCD_write_char(0,0x0c);      //显示开
  81:lcd1602.h     ****     LCD_write_char(0,0x01);      //显示清屏
  82:lcd1602.h     ****     LCD_write_char(0,0x06);      //显示光标移动设置
  83:lcd1602.h     ****   }
  84:lcd1602.h     **** /************************************************************************/
  85:lcd1602.h     **** /* LCD1602清屏                                                          */
  86:lcd1602.h     **** /************************************************************************/
  87:lcd1602.h     **** void LCD_clr(void)
  88:lcd1602.h     **** 	{
  89:lcd1602.h     **** 	LCD_write_char(0,0x01);
  90:lcd1602.h     **** 	}
  91:lcd1602.h     **** /*-----------------------------------------------------------------------
  92:lcd1602.h     **** LCD_write_char    : 英文字符串显示函数
  93:lcd1602.h     **** 
  94:lcd1602.h     **** 输入参数:*s      :英文字符串指针;
  95:lcd1602.h     ****           X、Y    : 显示字符串的位置,X:0-15,Y:0-1
  96:lcd1602.h     ****                     LCD第一行显示寄存器地址:0X80-0X8F
  97:lcd1602.h     ****                     LCD第一行显示寄存器地址:0XC0-0XCF
  98:lcd1602.h     **** 
  99:lcd1602.h     **** 编写日期          :2003-11-19 
 100:lcd1602.h     **** 最后修改日期      :2004-8-19 		
 101:lcd1602.h     **** -----------------------------------------------------------------------*/
 102:lcd1602.h     **** void LCD_write_char(unsigned command,unsigned data)
 103:lcd1602.h     ****   { unsigned char data_temp;
 104:lcd1602.h     ****     data_temp =0x00;   
 105:lcd1602.h     ****     if (command == 0)
 106:lcd1602.h     ****    	LCD_RS_PORT &= ~LCD_RS;   // RS=0 写命令模式
 107:lcd1602.h     **** 	else
 108:lcd1602.h     ****     LCD_RS_PORT |= LCD_RS;    // RS=1 写数据模式
 109:lcd1602.h     **** 	
 110:lcd1602.h     ****     data_temp = data;
 111:lcd1602.h     ****     LCD_Write_half_char(data_temp);    // 先写高四位
 112:lcd1602.h     **** 	data_temp = data;
 113:lcd1602.h     **** 	data_temp=data_temp << 4; // 再写低四位
 114:lcd1602.h     ****     LCD_Write_half_char(data_temp);
 115:lcd1602.h     **** 	//DELAY_nus(1);	 
 116:lcd1602.h     ****   }
 117:lcd1602.h     **** /*---------写高4bit到LCD,4到7位连接----*/
 118:lcd1602.h     **** void LCD_Write_half_char(unsigned data_in)
 119:lcd1602.h     ****   {
 871               	.LM105:
 872               	/* prologue: frame size=0 */
 873               	/* prologue end (size=0) */
 120:lcd1602.h     ****    	 LCD_DATA_PORT &= 0X0f; //portd4~7=0 
 875               	.LM106:
 876 01fe 98B3      		in r25,56-0x20
 877 0200 9F70      		andi r25,lo8(15)
 878 0202 98BB      		out 56-0x20,r25

⌨️ 快捷键说明

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