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

📄 main.lss

📁 使用Atmega8单片机开发的一个激光治疗仪的人机接口程序
💻 LSS
📖 第 1 页 / 共 5 页
字号:
			while((PINC&(1<<ADJUST))==0)
			{
			DelayMs(1);
			}	
			AdjustTimes=(++Adj)/2;
			if(Adj>8)Adj=1;
			Save_Flag();
			if(Adj%2)alarm_n_short(1);//Beep_short(1,200);
			}
		else if(AdjustTimesFlag==0)
		{
		if(((AllState&0b01000000)>>6)==1)ChargeADJUSTState_Display(10,(uchar)((AllState&0b00111000)>>3),(uchar)(AllState&0b00000111));
			else ADJUSTState_Display(10,(uchar)((AllState&0b00111000)>>3),(uchar)(AllState&0b00000111));
		}
		/**********
		if((Flag==1)&&(KeyState==2))
		{KeyState=0;//wdt_reset();
		DelayMs(1000);SwitchTimes=1;}//长按关机
		************/
		break;
	case 0x03:	
	Can_read=0,AllState=0,LevelState=1,OutState=0,ChargeState=0,LedSec=0,Time_minu=0,mh=0,ml=0,SwitchTimes=0,AdjustTimes=0,Time_sec=0;
	times=0,ChargeTimes=0,KeyState=0,ChargeFlag=0,LedFlag=0,ChargeFlagTimes=0,VoltageTimes=0,WorkFlag=0,Flag=1,FlagTimes=0,FirstFlag=0,DelayFlag=0,AdjustTimesFlag=0,KeyOld=0,Adj=1,AlarmFlag=0,AbandonFlag=0;
	mid=0,ADTimes=0,VoltageResult_AD=0,ChargeResult_AD=0;
	Init_Device();
	Init_Flag();
	AllState&=0b01000000;
	AllState|=(uchar)(AdjustTimes<<3)+LevelState;
		default:
		break;
	}
}   


uchar KeyScan (uchar ret)
{
     128:	98 2f       	mov	r25, r24
//puts("KeyScanT");
/****
#define POWER PB6
#define WORK PC4
#define ADJUST PC5
#define RESET PC6
***/
	if((PINB&(1<<POWER))==0)
     12a:	b6 99       	sbic	0x16, 6	; 22
     12c:	08 c0       	rjmp	.+16     	; 0x13e <KeyScan+0x16>
	{
		//DelayMs(1);
		
		if((PINB&(1<<POWER))==0)
     12e:	b6 99       	sbic	0x16, 6	; 22
     130:	24 c0       	rjmp	.+72     	; 0x17a <KeyScan+0x52>
		{
		ret=0;
     132:	90 e0       	ldi	r25, 0x00	; 0
		//AbandonFlag=1;
		//break;
		//puts("ret=");puts("0x00#");
		 // if(LedFlag==0){
		 LedSec=0;
     134:	90 93 81 00 	sts	0x0081, r25
		 Flag=0;
     138:	90 93 61 00 	sts	0x0061, r25
     13c:	1d c0       	rjmp	.+58     	; 0x178 <KeyScan+0x50>
		 //FirstFlag=1;
		 PORTC|=(1<<6);//}//LED背光给电10秒
		}
		
	}
		else if((PINC&(1<<WORK))==0)
     13e:	9c 99       	sbic	0x13, 4	; 19
     140:	08 c0       	rjmp	.+16     	; 0x152 <KeyScan+0x2a>
		{
		
			//DelayMs(1);
			if((Flag==1)&&(PINC&(1<<WORK))==0)
     142:	80 91 61 00 	lds	r24, 0x0061
     146:	81 30       	cpi	r24, 0x01	; 1
     148:	c1 f4       	brne	.+48     	; 0x17a <KeyScan+0x52>
     14a:	9c 99       	sbic	0x13, 4	; 19
     14c:	16 c0       	rjmp	.+44     	; 0x17a <KeyScan+0x52>
			{
			ret=1;
     14e:	98 2f       	mov	r25, r24
     150:	0b c0       	rjmp	.+22     	; 0x168 <KeyScan+0x40>
			//AbandonFlag=1;
			//break;
			//puts("ret=");puts("0x01#");
			// if(LedFlag==0){
			LedSec=0;
			PORTC|=(1<<6);//}//LED背光给电10秒
			}
		}
			else if((PINC&(1<<ADJUST))==0)
     152:	9d 99       	sbic	0x13, 5	; 19
     154:	0c c0       	rjmp	.+24     	; 0x16e <KeyScan+0x46>
			{
			
				//DelayMs(1);
				if((Flag==1)&&(PINC&(1<<ADJUST))==0)
     156:	80 91 61 00 	lds	r24, 0x0061
     15a:	81 30       	cpi	r24, 0x01	; 1
     15c:	71 f4       	brne	.+28     	; 0x17a <KeyScan+0x52>
     15e:	9d 99       	sbic	0x13, 5	; 19
     160:	0c c0       	rjmp	.+24     	; 0x17a <KeyScan+0x52>
				{
				ret=2;
     162:	92 e0       	ldi	r25, 0x02	; 2
				//break;
				//puts("ret=");puts("0x02#");
				AdjustTimesFlag=1;
     164:	80 93 6f 00 	sts	0x006F, r24
				//AbandonFlag=1;
				// if(LedFlag==0){
				LedSec=0;
     168:	10 92 81 00 	sts	0x0081, r1
     16c:	05 c0       	rjmp	.+10     	; 0x178 <KeyScan+0x50>
				PORTC|=(1<<6);//}//LED背光给电10秒
				}
			}
			
			else if((PINB&(1<<RESET))==0)
     16e:	b1 99       	sbic	0x16, 1	; 22
     170:	04 c0       	rjmp	.+8      	; 0x17a <KeyScan+0x52>
			{
			
				//DelayMs(1);
				if((PINB&(1<<RESET))==0)
     172:	b1 99       	sbic	0x16, 1	; 22
     174:	02 c0       	rjmp	.+4      	; 0x17a <KeyScan+0x52>
				{
				ret=3;
     176:	93 e0       	ldi	r25, 0x03	; 3
				PORTC|=(1<<6);//}//LED背光给电10秒
     178:	ae 9a       	sbi	0x15, 6	; 21
				}
			}

			
/******
	while(((PINB&_BV(POWER))!=_BV(POWER))||((PINC&(_BV(WORK)|_BV(ADJUST)))!=(_BV(WORK)|_BV(ADJUST))))	//
	{ DelayMs(1);}
********/

	if(ret!=KeyOld)
     17a:	80 91 6e 00 	lds	r24, 0x006E
     17e:	98 17       	cp	r25, r24
     180:	a9 f0       	breq	.+42     	; 0x1ac <KeyScan+0x84>
		{
		if((PINB&(1<<POWER))==0)
     182:	b6 99       	sbic	0x16, 6	; 22
     184:	05 c0       	rjmp	.+10     	; 0x190 <KeyScan+0x68>
			{
			DelayFlag=0;
     186:	10 92 70 00 	sts	0x0070, r1
			Flag=0;
     18a:	10 92 61 00 	sts	0x0061, r1
     18e:	08 c0       	rjmp	.+16     	; 0x1a0 <KeyScan+0x78>
			//FirstFlag=1;
			}
			else 
			if((PINC&(1<<WORK))==0)
     190:	9c 99       	sbic	0x13, 4	; 19
     192:	06 c0       	rjmp	.+12     	; 0x1a0 <KeyScan+0x78>
				{
				Flag=0;
     194:	10 92 61 00 	sts	0x0061, r1
				Time_minu=0;
     198:	10 92 80 00 	sts	0x0080, r1
			    Time_sec=0;
     19c:	10 92 7b 00 	sts	0x007B, r1
				}
		KeyOld=ret;
     1a0:	90 93 6e 00 	sts	0x006E, r25
		return KeyOld;
     1a4:	80 91 6e 00 	lds	r24, 0x006E
     1a8:	99 27       	eor	r25, r25
     1aa:	08 95       	ret
		}
	else 
	{
	/***
		if(ret=2)	
		{
		while((PINB&_BV(ADJUST))!=_BV(ADJUST))
		{asm("nop"::);}	
		AdjustTimesFlag=1;
		}
		******/
		return ret;
     1ac:	89 2f       	mov	r24, r25
     1ae:	99 27       	eor	r25, r25
	}

}
     1b0:	08 95       	ret

000001b2 <Reset_Source>:
     1b2:	84 b7       	in	r24, 0x34	; 52
     1b4:	04 b6       	in	r0, 0x34	; 52
     1b6:	00 fc       	sbrc	r0, 0
     1b8:	03 c0       	rjmp	.+6      	; 0x1c0 <Reset_Source+0xe>
     1ba:	04 b6       	in	r0, 0x34	; 52
     1bc:	01 fe       	sbrs	r0, 1
     1be:	02 c0       	rjmp	.+4      	; 0x1c4 <Reset_Source+0x12>
     1c0:	14 be       	out	0x34, r1	; 52
     1c2:	08 95       	ret
     1c4:	84 b7       	in	r24, 0x34	; 52
     1c6:	99 27       	eor	r25, r25
     1c8:	83 70       	andi	r24, 0x03	; 3
     1ca:	90 70       	andi	r25, 0x00	; 0
     1cc:	89 2b       	or	r24, r25
     1ce:	09 f0       	breq	.+2      	; 0x1d2 <Reset_Source+0x20>
     1d0:	14 be       	out	0x34, r1	; 52
     1d2:	08 95       	ret

000001d4 <Save_Flag>:
     1d4:	8c b3       	in	r24, 0x1c	; 28
     1d6:	99 27       	eor	r25, r25
     1d8:	dc 01       	movw	r26, r24
     1da:	a2 70       	andi	r26, 0x02	; 2
     1dc:	b0 70       	andi	r27, 0x00	; 0
     1de:	81 fd       	sbrc	r24, 1
     1e0:	f9 cf       	rjmp	.-14     	; 0x1d4 <Save_Flag>
    Write a byte \c value to EEPROM address \c addr. */

void 
eeprom_write_byte (uint8_t *addr,uint8_t value)
{
     1e2:	80 91 7c 00 	lds	r24, 0x007C
  asm volatile (
     1e6:	08 2e       	mov	r0, r24
     1e8:	25 da       	rcall	.-2998   	; 0xfffff634 <__eeprom_end+0xff7ef634>
     1ea:	08 95       	ret

000001ec <AD_init>:
void putc(uchar c)
{
while(!(UCSRA&(1<<UDRE)));
UDR=c;
}
uchar getc(void)
{
while(!(UCSRA&(1<<RXC)));
return UDR;
}

void puts(char *ptr)
{
    while (*ptr)
        putc(*ptr++);
}

void AD_init(void)
{   	
    ADCSRA=0X00; 
     1ec:	16 b8       	out	0x06, r1	; 6
	ACSR|=(1<<ACD);//关闭模拟比较器   
     1ee:	47 9a       	sbi	0x08, 7	; 8
    ADMUX|=(1<<REFS0)|(6&0x0F); //
     1f0:	87 b1       	in	r24, 0x07	; 7
     1f2:	86 64       	ori	r24, 0x46	; 70
     1f4:	87 b9       	out	0x07, r24	; 7
    ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1);//ADC转换 64分频
     1f6:	86 ec       	ldi	r24, 0xC6	; 198
     1f8:	86 b9       	out	0x06, r24	; 6
     1fa:	08 95       	ret

000001fc <Charge_Check>:
     1fc:	cf 93       	push	r28
     1fe:	80 91 64 00 	lds	r24, 0x0064
     202:	90 91 65 00 	lds	r25, 0x0065
     206:	8a 3f       	cpi	r24, 0xFA	; 250
     208:	91 05       	cpc	r25, r1
     20a:	a0 f0       	brcs	.+40     	; 0x234 <Charge_Check+0x38>
     20c:	c1 e0       	ldi	r28, 0x01	; 1
     20e:	c0 93 82 00 	sts	0x0082, r28
     212:	80 91 84 00 	lds	r24, 0x0084
     216:	80 64       	ori	r24, 0x40	; 64
     218:	80 93 84 00 	sts	0x0084, r24
     21c:	10 92 81 00 	sts	0x0081, r1
     220:	ae 9a       	sbi	0x15, 6	; 21
     222:	80 91 77 00 	lds	r24, 0x0077
     226:	88 23       	and	r24, r24
     228:	71 f4       	brne	.+28     	; 0x246 <Charge_Check+0x4a>
     22a:	8c 2f       	mov	r24, r28
     22c:	db d3       	rcall	.+1974   	; 0x9e4 <alarm_n_short>
     22e:	c0 93 77 00 	sts	0x0077, r28
     232:	09 c0       	rjmp	.+18     	; 0x246 <Charge_Check+0x4a>
     234:	10 92 82 00 	sts	0x0082, r1
     238:	80 91 84 00 	lds	r24, 0x0084
     23c:	8f 7b       	andi	r24, 0xBF	; 191
     23e:	80 93 84 00 	sts	0x0084, r24
     242:	10 92 77 00 	sts	0x0077, r1
     246:	cf 91       	pop	r28
     248:	08 95       	ret

0000024a <Close>:
     24a:	c7 98       	cbi	0x18, 7	; 24
     24c:	88 e1       	ldi	r24, 0x18	; 24
     24e:	90 e0       	ldi	r25, 0x00	; 0
     250:	2e e0       	ldi	r18, 0x0E	; 14
     252:	0f b6       	in	r0, 0x3f	; 63
     254:	f8 94       	cli
     256:	a8 95       	wdr
     258:	81 bd       	out	0x21, r24	; 33
     25a:	0f be       	out	0x3f, r0	; 63
     25c:	21 bd       	out	0x21, r18	; 33
     25e:	a8 95       	wdr
     260:	08 95       	ret

00000262 <Voltage_Check>:
     262:	80 91 66 00 	lds	r24, 0x0066
     266:	90 91 67 00 	lds	r25, 0x0067
     26a:	86 53       	subi	r24, 0x36	; 54
     26c:	93 40       	sbci	r25, 0x03	; 3
     26e:	30 f0       	brcs	.+12     	; 0x27c <Voltage_Check+0x1a>
     270:	84 e0       	ldi	r24, 0x04	; 4
     272:	80 93 62 00 	sts	0x0062, r24
     276:	81 e0       	ldi	r24, 0x01	; 1
     278:	b5 d3       	rcall	.+1898   	; 0x9e4 <alarm_n_short>
     27a:	4c c0       	rjmp	.+152    	; 0x314 <Voltage_Check+0xb2>
     27c:	80 91 66 00 	lds	r24, 0x0066
     280:	90 91 67 00 	lds	r25, 0x0067
     284:	87 52       	subi	r24, 0x27	; 39
     286:	93 40       	sbci	r25, 0x03	; 3
     288:	48 f0       	brcs	.+18     	; 0x29c <Voltage_Check+0x3a>
     28a:	80 91 66 00 	lds	r24, 0x0066
     28e:	90 91 67 00 	lds	r25, 0x0067
     292:	86 53       	subi	r24, 0x36	; 54
     294:	93 40       	sbci	r25, 0x03	; 3
     296:	10 f4       	brcc	.+4      	; 0x29c <Voltage_Check+0x3a>
     298:	84 e0       	ldi	r24, 0x04	; 4
     29a:	1f c0       	rjmp	.+62     	; 0x2da <Voltage_Check+0x78>
     29c:	80 91 66 00 	lds	r24, 0x0066
     2a0:	90 91 67 00 	lds	r25, 0x0067
     2a4:	88 50       	subi	r24, 0x08	; 8
     2a6:	93 40       	sbci	r25, 0x03	; 3
     2a8:	48 f0       	brcs	.+18     	; 0x2bc <Voltage_Check+0x5a>
     2aa:	80 91 66 00 	lds	r24, 0x0066
     2ae:	90 91 67 00 	lds	r25, 0x0067
     2b2:	87 52       	subi	r24, 0x27	; 39
     2b4:	93 40       	sbci	r25, 0x03	; 3
     2b6:	10 f4       	brcc	.+4      	; 0x2bc <Voltage_Check+0x5a>
     2b8:	83 e0       	ldi	r24, 0x03	; 3
     2ba:	0f c0       	rjmp	.+30     	; 0x2da <Voltage_Check+0x78>
     2bc:	80 91 66 00 	lds	r24, 0x0066
     2c0:	90 91 67 00 	lds	r25, 0x0067
     2c4:	89 5e       	subi	r24, 0xE9	; 233
     2c6:	92 40       	sbci	r25, 0x02	; 2
     2c8:	58 f0       	brcs	.+22     	; 0x2e0 <Voltage_Check+0x7e>
     2ca:	80 91 66 00 	lds	r24, 0x0066
     2ce:	90 91 67 00 	lds	r25, 0x0067
     2d2:	88 50       	subi	r24, 0x08	; 8
     2d4:	93 40       	sbci	r25, 0x03	; 3
     2d6:	20 f4       	brcc	.+8      	; 0x2e0 <Voltage_Check+0x7e>
     2d8:	82 e0       	ldi	r24, 0x02	; 2
     2da:	80 93 62 00 	sts	0x0062, r24
     2de:	1a c0       	rjmp	.+52     	; 0x314 <Voltage_Check+0xb2>
     2e0:	80 91 66 00 	lds	r24, 0x0066
     2e4:	90 91 67 00 	lds	r25, 0x0067
     2e8:	8a 5c       	subi	r24, 0xCA	; 202
     2ea:	92 40       	sbci	r25, 0x02	; 2
     2ec:	50 f0       	brcs	.+20     	; 0x302 <Voltage_Check+0xa0>
     2ee:	80 91 66 00 	lds	r24, 0x0066
     2f2:	90 91 67 00 	lds	r25, 0x0067
     2f6:	89 5e       	subi	r24, 0xE9	; 233

⌨️ 快捷键说明

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