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

📄 h2test.lst

📁 基于AVR单片机的热电偶测量系统源码
💻 LST
📖 第 1 页 / 共 5 页
字号:
__start:
__text_start:
    039C E5CF      LDI	R28,0x5F
    039D E0D4      LDI	R29,4
    039E BFCD      OUT	0x3D,R28
    039F BFDE      OUT	0x3E,R29
    03A0 51C0      SUBI	R28,0x10
    03A1 40D0      SBCI	R29,0
    03A2 EA0A      LDI	R16,0xAA
    03A3 8308      STD	Y+0,R16
    03A4 2400      CLR	R0
    03A5 E6E0      LDI	R30,0x60
    03A6 E0F0      LDI	R31,0
    03A7 E010      LDI	R17,0
    03A8 38E3      CPI	R30,0x83
    03A9 07F1      CPC	R31,R17
    03AA F011      BEQ	0x03AD
    03AB 9201      ST	R0,Z+
    03AC CFFB      RJMP	0x03A8
    03AD 8300      STD	Z+0,R16
    03AE E3E8      LDI	R30,0x38
    03AF E0F7      LDI	R31,7
    03B0 E6A0      LDI	R26,0x60
    03B1 E0B0      LDI	R27,0
    03B2 E017      LDI	R17,7
    03B3 33E8      CPI	R30,0x38
    03B4 07F1      CPC	R31,R17
    03B5 F021      BEQ	0x03BA
    03B6 95C8      LPM
    03B7 9631      ADIW	R30,1
    03B8 920D      ST	R0,X+
    03B9 CFF9      RJMP	0x03B3
    03BA 940E048C  CALL	_main
_exit:
    03BC CFFF      RJMP	_exit
_show_time:
  sec                  --> R20
  min                  --> R22
  hour                 --> R10
    03BD 940E0EC6  CALL	push_gset3
    03BF 9721      SBIW	R28,1
FILE: D:\zhangyu\H2test\program\main.c
(0001) /************************************************************
(0002)   FileName: main.c
(0003)   Author:        Version :          Date:
(0004)   Description:     // 模块描述      
(0005)   Version:         // 版本信息
(0006)   Function List:   // 主要函数及其功能
(0007)     1. -------
(0008)   History:         // 历史修改记录
(0009)       <author>  <time>   <version >   <desc>
(0010)       David    96/10/12     1.0     build this moudle  
(0011) ***********************************************************/
(0012) #include <iom16v.h>
(0013) #include <macros.h>
(0014) #include "main.h"
(0015) #include "initial_mcu.h"
(0016) #include "232.h"
(0017) #include "lcd.h"
(0018) #include "key.h"
(0019) #include "6675.h"
(0020) #include "1302.h"
(0021) #include "7135.h"
(0022) 
(0023) #define ICP PORTD&0x40
(0024) //全局变量
(0025) unsigned char entercount,leftcount,rightcount;
(0026) unsigned char position1302,hh,mm,positioncanbi,canbianjian;
(0027) unsigned int  time_array[6],canbi_array[5];
(0028) 
(0029) unsigned char endflag;
(0030) unsigned int ovcounter,pulse;
(0031) 
(0032) void show_time(void)
(0033) {
(0034) 	unsigned char hour,min,sec;
(0035) 	
(0036) 	hour=pDS1302_Read(mDS1302_HOUR_Reg); //时 
    03C0 E804      LDI	R16,0x84
    03C1 940E07ED  CALL	_pDS1302_Read
    03C3 2EA0      MOV	R10,R16
(0037)     min=pDS1302_Read(mDS1302_MIN_Reg);  //分 
    03C4 E802      LDI	R16,0x82
    03C5 940E07ED  CALL	_pDS1302_Read
    03C7 2F60      MOV	R22,R16
(0038)     sec=pDS1302_Read(mDS1302_SEC_Reg);  //秒 
    03C8 E800      LDI	R16,0x80
    03C9 940E07ED  CALL	_pDS1302_Read
    03CB 2F40      MOV	R20,R16
(0039) 	time_array[0]=hour>>4;
    03CC 2C2A      MOV	R2,R10
    03CD 2433      CLR	R3
    03CE 9435      ASR	R3
    03CF 9427      ROR	R2
    03D0 9435      ASR	R3
    03D1 9427      ROR	R2
    03D2 9435      ASR	R3
    03D3 9427      ROR	R2
    03D4 9435      ASR	R3
    03D5 9427      ROR	R2
    03D6 92300070  STS	time_array+1,R3
    03D8 9220006F  STS	time_array,R2
(0040) 	time_array[1]=hour&0x0f;
    03DA 2D8A      MOV	R24,R10
    03DB 2799      CLR	R25
    03DC 708F      ANDI	R24,0xF
    03DD 7090      ANDI	R25,0
    03DE 93900072  STS	time_array+3,R25
    03E0 93800071  STS	time_array+2,R24
(0041) 	time_array[2]=min>>4;
    03E2 2E26      MOV	R2,R22
    03E3 2433      CLR	R3
    03E4 9435      ASR	R3
    03E5 9427      ROR	R2
    03E6 9435      ASR	R3
    03E7 9427      ROR	R2
    03E8 9435      ASR	R3
    03E9 9427      ROR	R2
    03EA 9435      ASR	R3
    03EB 9427      ROR	R2
    03EC 92300074  STS	arab_3,R3
    03EE 92200073  STS	0x73,R2
(0042) 	time_array[3]=min&0x0f;
    03F0 2F86      MOV	R24,R22
    03F1 2799      CLR	R25
    03F2 708F      ANDI	R24,0xF
    03F3 7090      ANDI	R25,0
    03F4 93900076  STS	arab_3+2,R25
    03F6 93800075  STS	arab_3+1,R24
(0043) 	time_array[4]=sec>>4;
    03F8 2E24      MOV	R2,R20
    03F9 2433      CLR	R3
    03FA 9435      ASR	R3
    03FB 9427      ROR	R2
    03FC 9435      ASR	R3
    03FD 9427      ROR	R2
    03FE 9435      ASR	R3
    03FF 9427      ROR	R2
    0400 9435      ASR	R3
    0401 9427      ROR	R2
    0402 92300078  STS	0x78,R3
    0404 92200077  STS	arab_3+3,R2
(0044) 	time_array[5]=sec&0x0f;
    0406 2F84      MOV	R24,R20
    0407 2799      CLR	R25
    0408 708F      ANDI	R24,0xF
    0409 7090      ANDI	R25,0
    040A 9390007A  STS	0x7A,R25
    040C 93800079  STS	0x79,R24
(0045) 	Draw_NtoArab(0x00,0x28,time_array[0]);
    040E 9020006F  LDS	R2,time_array
    0410 90300070  LDS	R3,time_array+1
    0412 8228      STD	Y+0,R2
    0413 E228      LDI	R18,0x28
    0414 2700      CLR	R16
    0415 940E05BF  CALL	_Draw_NtoArab
(0046) 	Draw_NtoArab(0x00,0x30,time_array[1]);
    0417 90200071  LDS	R2,time_array+2
    0419 90300072  LDS	R3,time_array+3
    041B 8228      STD	Y+0,R2
    041C E320      LDI	R18,0x30
    041D 2700      CLR	R16
    041E 940E05BF  CALL	_Draw_NtoArab
(0047) 	Draw_NtoArab(0x00,0x40,time_array[2]);
    0420 90200073  LDS	R2,0x73
    0422 90300074  LDS	R3,arab_3
    0424 8228      STD	Y+0,R2
    0425 E420      LDI	R18,0x40
    0426 2700      CLR	R16
    0427 940E05BF  CALL	_Draw_NtoArab
(0048) 	Draw_NtoArab(0x00,0x48,time_array[3]);
    0429 90200075  LDS	R2,arab_3+1
    042B 90300076  LDS	R3,arab_3+2
    042D 8228      STD	Y+0,R2
    042E E428      LDI	R18,0x48
    042F 2700      CLR	R16
    0430 940E05BF  CALL	_Draw_NtoArab
(0049) 	Draw_NtoArab(0x00,0x58,time_array[4]);
    0432 90200077  LDS	R2,arab_3+3
    0434 90300078  LDS	R3,0x78
    0436 8228      STD	Y+0,R2
    0437 E528      LDI	R18,0x58
    0438 2700      CLR	R16
    0439 940E05BF  CALL	_Draw_NtoArab
(0050) 	Draw_NtoArab(0x00,0x60,time_array[5]);
    043B 90200079  LDS	R2,0x79
    043D 9030007A  LDS	R3,0x7A
    043F 8228      STD	Y+0,R2
    0440 E620      LDI	R18,0x60
    0441 2700      CLR	R16
    0442 940E05BF  CALL	_Draw_NtoArab
    0444 9621      ADIW	R28,1
    0445 940E0EB9  CALL	pop_gset3
    0447 9508      RET
_show_canbi:
    0448 9721      SBIW	R28,1
(0051) }
(0052) 
(0053) void show_canbi(void)
(0054) {
(0055) 	Draw_NtoArab(0x04,0x40,canbi_array[1]);
    0449 90200067  LDS	R2,canbi_array+2
    044B 90300068  LDS	R3,canbi_array+3
    044D 8228      STD	Y+0,R2
    044E E420      LDI	R18,0x40
    044F E004      LDI	R16,4
    0450 940E05BF  CALL	_Draw_NtoArab
(0056)  	Draw_NtoArab(0x04,0x48,canbi_array[2]);
    0452 90200069  LDS	R2,0x69
    0454 9030006A  LDS	R3,0x6A
    0456 8228      STD	Y+0,R2
    0457 E428      LDI	R18,0x48
    0458 E004      LDI	R16,4
    0459 940E05BF  CALL	_Draw_NtoArab
(0057)  	Draw_NtoArab(0x04,0x58,canbi_array[3]);
    045B 9020006B  LDS	R2,0x6B
    045D 9030006C  LDS	R3,0x6C
    045F 8228      STD	Y+0,R2
    0460 E528      LDI	R18,0x58
    0461 E004      LDI	R16,4
    0462 940E05BF  CALL	_Draw_NtoArab
(0058)  	Draw_NtoArab(0x04,0x60,canbi_array[4]);
    0464 9020006D  LDS	R2,0x6D
    0466 9030006E  LDS	R3,0x6E
    0468 8228      STD	Y+0,R2
    0469 E620      LDI	R18,0x60
    046A E004      LDI	R16,4
    046B 940E05BF  CALL	_Draw_NtoArab
    046D 9621      ADIW	R28,1
    046E 9508      RET
(0059) }
(0060) 
(0061) void data_init(void) 
(0062) {
(0063)   	unsigned char i;
(0064)   	entercount=0;
_data_init:
  i                    --> R16
    046F 2422      CLR	R2
    0470 92200082  STS	entercount,R2
(0065)   	leftcount=0;
    0472 92200081  STS	leftcount,R2
(0066)   	rightcount=0;
    0474 92200080  STS	rightcount,R2
(0067)   	position1302=0;
    0476 9220007F  STS	position1302,R2
(0068)   	positioncanbi=0x02;
    0478 E082      LDI	R24,2
    0479 9380007C  STS	positioncanbi,R24
(0069)   	for(i=1;i<5;i++)
    047B E001      LDI	R16,1
    047C C00C      RJMP	0x0489
(0070)   		canbi_array[i]=0x00;
    047D E082      LDI	R24,2
    047E 9F80      MUL	R24,R16
    047F 01F0      MOVW	R30,R0
    0480 E685      LDI	R24,0x65
    0481 E090      LDI	R25,0
    0482 0FE8      ADD	R30,R24
    0483 1FF9      ADC	R31,R25
    0484 2422      CLR	R2
    0485 2433      CLR	R3
    0486 8231      STD	Z+1,R3
    0487 8220      STD	Z+0,R2
    0488 9503      INC	R16
    0489 3005      CPI	R16,5
    048A F390      BCS	0x047D
    048B 9508      RET
(0071) }
(0072) 
(0073) void main(void)
(0074) {
(0075) 	Initial_MCU();	//初始化mcu
_main:
    048C 940E04C8  CALL	_Initial_MCU
(0076) 	Initial_LCD();	//初始化LCD
    048E 940E0518  CALL	_Initial_LCD
(0077) 	Com0_Init();	//初始化串口
    0490 940E0796  CALL	_Com0_Init
(0078) 	pDS1302_Init(); //初始化1302
    0492 940E083E  CALL	_pDS1302_Init
(0079) 	data_init();
    0494 DFDA      RCALL	_data_init
(0080)     Clear_DDRAM(0x00,0x07); //清除lcd的所有显示内容
    0495 E027      LDI	R18,7
    0496 2700      CLR	R16
    0497 940E0537  CALL	_Clear_DDRAM
(0081) 	Draw_Menu_Interface();	//绘制主菜单
    0499 940E06EB  CALL	_Draw_Menu_Interface
    049B C00B      RJMP	0x04A7
(0082) 	while(1)
(0083) 	{
(0084) 	 	Uart_Transmit('a');
    049C E601      LDI	R16,0x61
    049D 940E07A4  CALL	_Uart_Transmit
(0085) 	 	show_time();
    049F DF1D      RCALL	_show_time
(0086) 	 	show_temperature();
    04A0 940E097B  CALL	_show_temperature
(0087) 	 	show_canbi();
    04A2 DFA5      RCALL	_show_canbi
(0088) 	 	checkkey();
    04A3 940E0C4F  CALL	_checkkey
(0089) 		display7135();
    04A5 940E0DEF  CALL	_display7135
    04A7 CFF4      RJMP	0x049C
    04A8 9508      RET
_timer1_capt_isr:
    04A9 922A      ST	R2,-Y
    04AA 923A      ST	R3,-Y
    04AB 938A      ST	R24,-Y
    04AC B62F      IN	R2,0x3F
    04AD 922A      ST	R2,-Y
(0090) 	}	
(0091) }
(0092) 
(0093) 
(0094) //测7135的busy信号所需的定时器捕获中断函数
(0095) #pragma interrupt_handler timer1_capt_isr:6
(0096) void timer1_capt_isr(void)
(0097) {
(0098) 	if(ICP)
    04AE 9B96      SBIS	0x12,6
    04AF C007      RJMP	0x04B7
(0099) 	{
(0100) 	 	endflag=0;
    04B0 2422      CLR	R2
    04B1 92200064  STS	endflag,R2
(0101) 		TCCR1B&=0xbf;	//下降沿捕获
    04B3 B58E      IN	R24,0x2E
    04B4 7B8F      ANDI	R24,0xBF
    04B5 BD8E      OUT	0x2E,R24
(0102) 	}
    04B6 C00B      RJMP	0x04C2
(0103) 	else
(0104) 	{
(0105) 		pulse=ICR1;
    04B7 B426      IN	R2,0x26
    04B8 B437      IN	R3,0x27
    04B9 92300061  STS	pulse+1,R3
    04BB 92200060  STS	pulse,R2
(0106) 		endflag=1;
    04BD E081      LDI	R24,1
    04BE 93800064  STS	endflag,R24
(0107) 		TCCR1B=0x00;	//stop timer1
    04C0 2422      CLR	R2
    04C1 BC2E      OUT	0x2E,R2
(0108) 	}
    04C2 9029      LD	R2,Y+
    04C3 BE2F      OUT	0x3F,R2
    04C4 9189      LD	R24,Y+
    04C5 9039      LD	R3,Y+
    04C6 9029      LD	R2,Y+
    04C7 9518      RETI
FILE: D:\zhangyu\H2test\program\initial_mcu.c
(0001) /*-------------------------------------------------------------*-
(0002) initial_mcu.h(v1.00)
(0003) -----------------------------------------------------------------
(0004) 初始化MCU的代码
(0005) -*--------------------------------------------------------------*/
(0006) #include <iom16v.h>
(0007) #include <macros.h>
(0008) #include "initial_mcu.h"
(0009) 
(0010) void Initial_MCU(void)
(0011) {
(0012)     CLI();
_Initial_MCU:
    04C8 94F8      BCLR	7
(0013)     DDRA = 0xff;
    04C9 EF8F      LDI	R24,0xFF
    04CA BB8A      OUT	0x1A,R24
(0014)     PORTA = 0xff;
    04CB BB8B      OUT	0x1B,R24
(0015)     DDRB = 0x03;
    04CC E083      LDI	R24,3
    04CD BB87      OUT	0x17,R24
(0016)     PORTB = 0xff;
    04CE EF8F      LDI	R24,0xFF
    04CF BB88      OUT	0x18,R24
(0017)     DDRC = 0xc3;
    04D0 EC83      LDI	R24,0xC3
    04D1 BB84      OUT	0x14,R24
(0018)     PORTC = 0xff;
    04D2 EF8F      LDI	R24,0xFF
    04D3 BB85      OUT	0x15,R24
(0019)     DDRD = 0xae;
    04D4 EA8E      LDI	R24,0xAE
    04D5 BB81      OUT	0x11,R24
(0020)     PORTD = 0xff;
    04D6 EF8F      LDI	R24,0xFF
    04D7 BB82      OUT	0x12,R24
    04D8 9508      RET
FILE: D:\zhangyu\H2test\program\lcd.c
(0001) /************************************************************
(0002)   FileName: lcd.c
(0003)   Description: 液晶显示模块初始化lcd,向lcd发送命令字和数据,显示指定大小的图像,清屏。                        
(0004)   Function List:  
(0005)     1.Send_Byte()
(0006)       功能:向lcd的控制芯片发送数据
(0007)       
(0008)     2.Send_Commnad()
(0009)       功能:向lcd的控制芯片发送命令字
(0010)       
(0011)     3.Gen_Column_MSB()
(0012)       Gen_Column_MSB()
(0013)       功能:生成设置高4位和低4位列地址的命令字
(0014) 
(0015)     4.Initial_LCD()
(0016)       功能:初始化lcd
(0017)       
(0018)     5.Gen_Page()
(0019)       功能:生成设置页地址的命令字
(0020)       
(0021)       
(0022)     6.Clear_DDRAM()

⌨️ 快捷键说明

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