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

📄 main.lss

📁 AVR单片机ATMEGA32驱动240*128LCD程序
💻 LSS
📖 第 1 页 / 共 5 页
字号:
     fb8:	39 07       	cpc	r19, r25
     fba:	49 f0       	breq	.+18     	; 0xfce <wait+0x1c>
		for(j=0;j<6;j++){
				__asm__("	WDR");
     fbc:	a8 95       	wdr
     fbe:	a8 95       	wdr
     fc0:	a8 95       	wdr
     fc2:	a8 95       	wdr
     fc4:	a8 95       	wdr
     fc6:	a8 95       	wdr
     fc8:	2f 5f       	subi	r18, 0xFF	; 255
     fca:	3f 4f       	sbci	r19, 0xFF	; 255
     fcc:	f4 cf       	rjmp	.-24     	; 0xfb6 <wait+0x4>
     fce:	08 95       	ret

00000fd0 <__vector_10>:

		}
	}
}
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////

int main(void)
{
	unsigned int ms = 0;
	unsigned int msa = 0;
	unsigned int msb = 0;
	unsigned int msc = 0;
	unsigned int msf = 0;
	unsigned int msg = 0;
	volatile unsigned char null = 0;
	unsigned char ka = 0,kb = 0;
//	unsigned char k = 0;
//	const unsigned char *p = name;
	vInit(); //初始化片内设备
	null = LCD_INIT();//LCD初始化
	vLCD_Page_Change(1);
	wait(10000);
	wait(10000);
	wait(10000);

	vDataInit();
	vDisplay();
	//vLCD_Page_Change(1);
	//vLCD_Page_Change(2);
	while(1)
	{
		__asm__("	WDR");
		if(TIFR&(1<<OCF0))//1KHz---1000us
		{
			TIFR |=1<<OCF0;
			ms +=1;
			if(TimeOut>0)TimeOut--;			
			if(ms >3999)ms=0;
		}
		if(((ms%2000)==99)&&(msf!=ms))
		{
			msf=ms;
			msg++;
			if(msg>10)
			{
				LCD_page1();
				LCD_page2();
				msg=0;
			}
		}
		
		if(((ms%20)==5)&&(msa!=ms))
		{
			msa = ms;
			//TODO: the code below will be execute every 30ms
			ka = cKey(cKeyScan());
			if(kb != ka)
			{
				kb = ka;
				if(kb < 0x14)vMenu(kb);
			}
			vSetPara();
			if((LowStatus&0x00ff)==0x0009)
			{
				if(Stepchange==0x0f)Stepchange=0x00;
			}
			if((LowStatus&0x00ff)==0x0021)
			{
				if(Stepchange==0x00)	
				{
					Stepchange=0x0f;	
					N_step			= N_step+1;
					NS_state		= XS_state[N_step];	
					CVoltage		= XVoltage[N_step];
					CCurrent		= XCurrent[N_step];
					StopCurrent		= XStopCurrent[N_step];
					StopTime		= XStopTime[N_step];
					StopCapacitor	= XStopCapacitor[N_step];
					N_flag			=	S_number[N_step];					
					WorkStatus = 0x30;
					vWork();
					dis_fige=1;
					
					if(NS_state==0)
					{
						WorkStatus = 0x10;
						Work_commend=0xff00;
						vStop();
						dis_fige=0;
					}
					if(NS_state==5)
					{
						N_step		= 	N_flag-1;
						N_cycle++;
						WorkStatus	= 0x12;	
					}
				}
			}
		}
		if(((ms%100)==15)&&(msb!=ms))
		{
			msb = ms;
			//TODO: the code below will be execute every 100ms
			DisNum(0,0);
		}
		if(((ms%10)==3)&&(msc!=ms))
		{
			msc = ms;
			AVE_current();
		}
	}
	return(-1);
}
//////////////////////////////////////////////////////////////////////
void vDisplay(void)
{
	DisNum(0,0);
	DisNum(XVoltage[number],5);
	DisNum(XCurrent[number],6);
	DisNum(XStopCurrent[number],7);
	DisNum(XStopTime[number],8);
	DisNum(XStopCapacitor[number],9);
	DisNum(S_number[number],10);
	vSet_state(XS_state[number]);
}
//中断服务函数区/////////////////////////////////////////////////////////
/*ISR(SPI_STC_vect)
{
	
	unsigned char val = 0x00;
	unsigned int tout= 0X0000;
	val=SPSR;
	val = SPDR;
	SPDR=0x55;	
}*/
ISR(SPI_STC_vect)
{
     fd0:	1f 92       	push	r1
     fd2:	0f 92       	push	r0
     fd4:	0f b6       	in	r0, 0x3f	; 63
     fd6:	0f 92       	push	r0
     fd8:	11 24       	eor	r1, r1
     fda:	2f 93       	push	r18
     fdc:	3f 93       	push	r19
     fde:	8f 93       	push	r24
     fe0:	9f 93       	push	r25
     fe2:	ef 93       	push	r30
     fe4:	ff 93       	push	r31
	volatile static unsigned char bn = 0xff;
	static unsigned char kk = 0x00;
	static unsigned char k  = 0x00;
	static unsigned char mp  = 0x00;
	unsigned char val = 0x00;
	
	val = SPDR;
     fe6:	2f b1       	in	r18, 0x0f	; 15
	if(TimeOut == 0)
     fe8:	80 91 60 00 	lds	r24, 0x0060
     fec:	88 23       	and	r24, r24
     fee:	11 f4       	brne	.+4      	; 0xff4 <__vector_10+0x24>
	{
		bn = 0;
     ff0:	10 92 63 00 	sts	0x0063, r1
	}
	switch(bn)
     ff4:	80 91 63 00 	lds	r24, 0x0063
     ff8:	81 30       	cpi	r24, 0x01	; 1
     ffa:	a1 f1       	breq	.+104    	; 0x1064 <__vector_10+0x94>
     ffc:	81 30       	cpi	r24, 0x01	; 1
     ffe:	20 f0       	brcs	.+8      	; 0x1008 <__vector_10+0x38>
    1000:	82 30       	cpi	r24, 0x02	; 2
    1002:	09 f0       	breq	.+2      	; 0x1006 <__vector_10+0x36>
    1004:	e9 c0       	rjmp	.+466    	; 0x11d8 <__vector_10+0x208>
    1006:	78 c0       	rjmp	.+240    	; 0x10f8 <__vector_10+0x128>
	{
		case 0:
		{
			k = val;
    1008:	20 93 83 00 	sts	0x0083, r18
			switch(k)
    100c:	23 30       	cpi	r18, 0x03	; 3
    100e:	d9 f0       	breq	.+54     	; 0x1046 <__vector_10+0x76>
    1010:	24 30       	cpi	r18, 0x04	; 4
    1012:	28 f4       	brcc	.+10     	; 0x101e <__vector_10+0x4e>
    1014:	21 30       	cpi	r18, 0x01	; 1
    1016:	81 f0       	breq	.+32     	; 0x1038 <__vector_10+0x68>
    1018:	22 30       	cpi	r18, 0x02	; 2
    101a:	90 f4       	brcc	.+36     	; 0x1040 <__vector_10+0x70>
    101c:	0a c0       	rjmp	.+20     	; 0x1032 <__vector_10+0x62>
    101e:	25 30       	cpi	r18, 0x05	; 5
    1020:	c1 f0       	breq	.+48     	; 0x1052 <__vector_10+0x82>
    1022:	25 30       	cpi	r18, 0x05	; 5
    1024:	98 f0       	brcs	.+38     	; 0x104c <__vector_10+0x7c>
    1026:	26 30       	cpi	r18, 0x06	; 6
    1028:	b9 f0       	breq	.+46     	; 0x1058 <__vector_10+0x88>
    102a:	27 30       	cpi	r18, 0x07	; 7
    102c:	09 f0       	breq	.+2      	; 0x1030 <__vector_10+0x60>
    102e:	d4 c0       	rjmp	.+424    	; 0x11d8 <__vector_10+0x208>
    1030:	16 c0       	rjmp	.+44     	; 0x105e <__vector_10+0x8e>
			{
				case 0:
				{
					SPDR =	Work_commend%0x100;//发送命令的低字节
    1032:	80 91 6e 00 	lds	r24, 0x006E
    1036:	02 c0       	rjmp	.+4      	; 0x103c <__vector_10+0x6c>
				}break;
				case 1:
				{
					SPDR =	StopCurrent%0x100;//发送涓流电流
    1038:	80 91 0f 01 	lds	r24, 0x010F
    103c:	8f b9       	out	0x0f, r24	; 15
    103e:	cc c0       	rjmp	.+408    	; 0x11d8 <__vector_10+0x208>
				}break;
				case 2:
				{
					SPDR =	CVoltage%0x100;//发送恒压
    1040:	80 91 85 00 	lds	r24, 0x0085
    1044:	fb cf       	rjmp	.-10     	; 0x103c <__vector_10+0x6c>
				}break;
				case 3:
				{
					SPDR =	CCurrent%0x100;//发送恒流
    1046:	80 91 11 01 	lds	r24, 0x0111
    104a:	f8 cf       	rjmp	.-16     	; 0x103c <__vector_10+0x6c>
				}break;
				case 4:
				{
					SPDR =	StopTemp%0x100;//发送温度上限
    104c:	80 91 7a 00 	lds	r24, 0x007A
    1050:	f5 cf       	rjmp	.-22     	; 0x103c <__vector_10+0x6c>
				}break;
				case 5:
				{
					SPDR =	StopTime%0x100;//发送时间上限
    1052:	80 91 e5 00 	lds	r24, 0x00E5
    1056:	f2 cf       	rjmp	.-28     	; 0x103c <__vector_10+0x6c>
				}break;
				case 6:
				{
					SPDR = StopCapacitor%0x100;//发送容量上限
    1058:	80 91 a7 00 	lds	r24, 0x00A7
    105c:	ef cf       	rjmp	.-34     	; 0x103c <__vector_10+0x6c>
				}break;
				case 7:
				{
					SPDR = NS_state%0x100;//发送停止电压
    105e:	80 91 6c 00 	lds	r24, 0x006C
    1062:	ec cf       	rjmp	.-40     	; 0x103c <__vector_10+0x6c>
				}break;
				case 8:
				{
				}break;
				default: break;
			}
		}break;
		case 1:
		{
			switch(k)
    1064:	80 91 83 00 	lds	r24, 0x0083
    1068:	84 30       	cpi	r24, 0x04	; 4
    106a:	69 f1       	breq	.+90     	; 0x10c6 <__vector_10+0xf6>
    106c:	85 30       	cpi	r24, 0x05	; 5
    106e:	50 f4       	brcc	.+20     	; 0x1084 <__vector_10+0xb4>
    1070:	81 30       	cpi	r24, 0x01	; 1
    1072:	b9 f0       	breq	.+46     	; 0x10a2 <__vector_10+0xd2>
    1074:	81 30       	cpi	r24, 0x01	; 1
    1076:	80 f0       	brcs	.+32     	; 0x1098 <__vector_10+0xc8>
    1078:	82 30       	cpi	r24, 0x02	; 2
    107a:	d9 f0       	breq	.+54     	; 0x10b2 <__vector_10+0xe2>
    107c:	83 30       	cpi	r24, 0x03	; 3
    107e:	09 f0       	breq	.+2      	; 0x1082 <__vector_10+0xb2>
    1080:	ab c0       	rjmp	.+342    	; 0x11d8 <__vector_10+0x208>
    1082:	1c c0       	rjmp	.+56     	; 0x10bc <__vector_10+0xec>
    1084:	86 30       	cpi	r24, 0x06	; 6
    1086:	49 f1       	breq	.+82     	; 0x10da <__vector_10+0x10a>
    1088:	86 30       	cpi	r24, 0x06	; 6
    108a:	10 f1       	brcs	.+68     	; 0x10d0 <__vector_10+0x100>
    108c:	87 30       	cpi	r24, 0x07	; 7
    108e:	51 f1       	breq	.+84     	; 0x10e4 <__vector_10+0x114>
    1090:	88 30       	cpi	r24, 0x08	; 8
    1092:	09 f0       	breq	.+2      	; 0x1096 <__vector_10+0xc6>
    1094:	a1 c0       	rjmp	.+322    	; 0x11d8 <__vector_10+0x208>
    1096:	2d c0       	rjmp	.+90     	; 0x10f2 <__vector_10+0x122>
			{
				case 0:
				{
					SPDR =	Work_commend/0x100;//发送命令的高字节
    1098:	80 91 6e 00 	lds	r24, 0x006E
    109c:	90 91 6f 00 	lds	r25, 0x006F
    10a0:	04 c0       	rjmp	.+8      	; 0x10aa <__vector_10+0xda>
					kk	= val;
				}break;
				case 1:
				{
					SPDR =	StopCurrent/0x100;//发送涓流电流
    10a2:	80 91 0f 01 	lds	r24, 0x010F
    10a6:	90 91 10 01 	lds	r25, 0x0110
    10aa:	89 2f       	mov	r24, r25
    10ac:	99 27       	eor	r25, r25
    10ae:	8f b9       	out	0x0f, r24	; 15
    10b0:	20 c0       	rjmp	.+64     	; 0x10f2 <__vector_10+0x122>
					kk	= val;
				}break;
				case 2:
				{
					SPDR = CVoltage/0x100;	//发送恒压
    10b2:	80 91 85 00 	lds	r24, 0x0085
    10b6:	90 91 86 00 	lds	r25, 0x0086
    10ba:	f7 cf       	rjmp	.-18     	; 0x10aa <__vector_10+0xda>
					kk = val;
				}break;
				case 3:
				{
					SPDR = CCurrent/0x100;	//发送恒流
    10bc:	80 91 11 01 	lds	r24, 0x0111
    10c0:	90 91 12 01 	lds	r25, 0x0112
    10c4:	f2 cf       	rjmp	.-28     	; 0x10aa <__vector_10+0xda>
					kk = val;
				}break;
				case 4:
				{
					SPDR = StopTemp/0x100;	//发送温度上限
    10c6:	80 91 7a 00 	lds	r24, 0x007A
    10ca:	90 91 7b 00 	lds	r25, 0x007B
    10ce:	ed cf       	rjmp	.-38     	; 0x10aa <__vector_10+0xda>
					kk = val;
				}break;
				case 5:
				{
					SPDR = StopTime/0x100;	//发送时间上限
    10d0:	80 91 e5 00 	lds	r24, 0x00E5
    10d4:	90 91 e6 00 	lds	r25, 0x00E6
    10d8:	e8 cf       	rjmp	.-48     	; 0x10aa <__vector_10+0xda>
					kk = val;
				}break;
				case 6:
				{
					SPDR = StopCapacitor/0x100;	//发送容量上限
    10da:	80 91 a7 00 	lds	r24, 0x00A7
    10de:	90 91 a8 00 	lds	r25, 0x00A8
    10e2:	e3 cf       	rjmp	.-58     	; 0x10aa <__vector_10+0xda>
					kk = val;
				}break;
				case 7:
				{
					SPDR = NS_state/0x100;//发送停止电压
    10e4:	80 91 6c 00 	lds	r24, 0x006C
    10e8:	90 91 6d 00 	lds	r25, 0x006D
    10ec:	89 2f       	mov	r24, r25

⌨️ 快捷键说明

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