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

📄 m16_pwm.lss

📁 AVR单片机ATmega16的PWM测试程序
💻 LSS
📖 第 1 页 / 共 2 页
字号:
			PORTC = sel;
 144:	25 bb       	out	0x15, r18	; 21
			PORTA = 0xff - table[p[i]];
 146:	ed 91       	ld	r30, X+
 148:	f0 e0       	ldi	r31, 0x00	; 0
 14a:	e0 5a       	subi	r30, 0xA0	; 160
 14c:	ff 4f       	sbci	r31, 0xFF	; 255
 14e:	80 81       	ld	r24, Z
 150:	80 95       	com	r24
 152:	8b bb       	out	0x1b, r24	; 27
 154:	ca 01       	movw	r24, r20
 156:	01 97       	sbiw	r24, 0x01	; 1
 158:	f1 f7       	brne	.-4      	; 0x156 <key_process+0x4a>
			_delay_ms(10);
			sel <<= 1;	
 15a:	22 0f       	add	r18, r18
uint8 key1, key2;

void display(uint8 *p)
{
		uint8 sel = 0x01;
		for (uint8 i = 0; i < 4; i++)
 15c:	80 e0       	ldi	r24, 0x00	; 0
 15e:	a0 37       	cpi	r26, 0x70	; 112
 160:	b8 07       	cpc	r27, r24
 162:	81 f7       	brne	.-32     	; 0x144 <key_process+0x38>
			key1 = 1;
		}
		while ((PINB & 0x02) == 0)
		{
			display(data1);
			key2 = 1;	
 164:	30 93 75 00 	sts	0x0075, r19
 168:	03 c0       	rjmp	.+6      	; 0x170 <key_process+0x64>
		while ((PINB & 0x01) == 0)
		{
			display(data1);
			key1 = 1;
		}
		while ((PINB & 0x02) == 0)
 16a:	31 e0       	ldi	r19, 0x01	; 1
 16c:	44 ec       	ldi	r20, 0xC4	; 196
 16e:	59 e0       	ldi	r21, 0x09	; 9
 170:	b1 99       	sbic	0x16, 1	; 22
 172:	04 c0       	rjmp	.+8      	; 0x17c <key_process+0x70>
 174:	ac e6       	ldi	r26, 0x6C	; 108
 176:	b0 e0       	ldi	r27, 0x00	; 0
 178:	21 e0       	ldi	r18, 0x01	; 1
 17a:	e4 cf       	rjmp	.-56     	; 0x144 <key_process+0x38>
		{
			display(data1);
			key2 = 1;	
		}
		
		if (key1 == 1)
 17c:	80 91 74 00 	lds	r24, 0x0074
 180:	81 30       	cpi	r24, 0x01	; 1
 182:	31 f4       	brne	.+12     	; 0x190 <key_process+0x84>
		{
			add(data1);
 184:	8c e6       	ldi	r24, 0x6C	; 108
 186:	90 e0       	ldi	r25, 0x00	; 0
 188:	0e 94 64 00 	call	0xc8	; 0xc8 <add>
			key1 = 0;	
 18c:	10 92 74 00 	sts	0x0074, r1
		}
		if (key2 == 1)
 190:	80 91 75 00 	lds	r24, 0x0075
 194:	81 30       	cpi	r24, 0x01	; 1
 196:	31 f4       	brne	.+12     	; 0x1a4 <key_process+0x98>
		{
			sub(data1);
 198:	8c e6       	ldi	r24, 0x6C	; 108
 19a:	90 e0       	ldi	r25, 0x00	; 0
 19c:	0e 94 72 00 	call	0xe4	; 0xe4 <sub>
			key2 = 0;	
 1a0:	10 92 75 00 	sts	0x0075, r1
 1a4:	08 95       	ret

000001a6 <set_process>:
		}
}

void set_process(uint8 *p)
{
 1a6:	fc 01       	movw	r30, r24
	uint16 tmp;
	tmp = p[1] * 10 + p[2];
	tmp = 1023 * tmp / 10;
 1a8:	81 81       	ldd	r24, Z+1	; 0x01
 1aa:	2a e0       	ldi	r18, 0x0A	; 10
 1ac:	82 9f       	mul	r24, r18
 1ae:	c0 01       	movw	r24, r0
 1b0:	11 24       	eor	r1, r1
 1b2:	22 81       	ldd	r18, Z+2	; 0x02
 1b4:	82 0f       	add	r24, r18
 1b6:	91 1d       	adc	r25, r1
 1b8:	2f ef       	ldi	r18, 0xFF	; 255
 1ba:	33 e0       	ldi	r19, 0x03	; 3
 1bc:	ac 01       	movw	r20, r24
 1be:	42 9f       	mul	r20, r18
 1c0:	c0 01       	movw	r24, r0
 1c2:	43 9f       	mul	r20, r19
 1c4:	90 0d       	add	r25, r0
 1c6:	52 9f       	mul	r21, r18
 1c8:	90 0d       	add	r25, r0
 1ca:	11 24       	eor	r1, r1
 1cc:	6a e0       	ldi	r22, 0x0A	; 10
 1ce:	70 e0       	ldi	r23, 0x00	; 0
 1d0:	0e 94 32 01 	call	0x264	; 0x264 <__udivmodhi4>
	OCR1AH = tmp >> 8;
 1d4:	7b bd       	out	0x2b, r23	; 43
	OCR1AL = tmp & 0x00ff;
 1d6:	6a bd       	out	0x2a, r22	; 42
}
 1d8:	08 95       	ret

000001da <io_init>:

void io_init(void)
{
 1da:	8f ef       	ldi	r24, 0xFF	; 255
 1dc:	8a bb       	out	0x1a, r24	; 26
	DDRA = 0xff;
	PORTA = 0xff;
 1de:	8b bb       	out	0x1b, r24	; 27
	DDRC = 0xff;
 1e0:	84 bb       	out	0x14, r24	; 20
	PORTC = 0xff;	
 1e2:	85 bb       	out	0x15, r24	; 21
	DDRB = 0x00;
 1e4:	17 ba       	out	0x17, r1	; 23
	PORTB = 0x00;
 1e6:	18 ba       	out	0x18, r1	; 24
	DDRD = 0xff;
 1e8:	81 bb       	out	0x11, r24	; 17
	PORTD = 0xff;
 1ea:	82 bb       	out	0x12, r24	; 18
}
 1ec:	08 95       	ret

000001ee <main>:


int main(void)
{
 1ee:	cf 93       	push	r28
 1f0:	df 93       	push	r29
	OCR1AL = tmp & 0x00ff;
}

void io_init(void)
{
	DDRA = 0xff;
 1f2:	8f ef       	ldi	r24, 0xFF	; 255
 1f4:	8a bb       	out	0x1a, r24	; 26
	PORTA = 0xff;
 1f6:	8b bb       	out	0x1b, r24	; 27
	DDRC = 0xff;
 1f8:	84 bb       	out	0x14, r24	; 20
	PORTC = 0xff;	
 1fa:	85 bb       	out	0x15, r24	; 21
	DDRB = 0x00;
 1fc:	17 ba       	out	0x17, r1	; 23
	PORTB = 0x00;
 1fe:	18 ba       	out	0x18, r1	; 24
	DDRD = 0xff;
 200:	81 bb       	out	0x11, r24	; 17
	PORTD = 0xff;
 202:	82 bb       	out	0x12, r24	; 18


int main(void)
{
	io_init();
	TCCR1A = 0xc3;
 204:	83 ec       	ldi	r24, 0xC3	; 195
 206:	8f bd       	out	0x2f, r24	; 47
	TCCR1B = 0x02;
 208:	82 e0       	ldi	r24, 0x02	; 2
 20a:	8e bd       	out	0x2e, r24	; 46
 20c:	88 ea       	ldi	r24, 0xA8	; 168
 20e:	91 e6       	ldi	r25, 0x61	; 97
 210:	01 97       	sbiw	r24, 0x01	; 1
 212:	f1 f7       	brne	.-4      	; 0x210 <main+0x22>
	_delay_ms(100);
	while (1)
	{
		key_process();
 214:	c4 ec       	ldi	r28, 0xC4	; 196
 216:	d9 e0       	ldi	r29, 0x09	; 9
 218:	0e 94 86 00 	call	0x10c	; 0x10c <key_process>
		set_process(data1);
 21c:	8c e6       	ldi	r24, 0x6C	; 108
 21e:	90 e0       	ldi	r25, 0x00	; 0
 220:	0e 94 d3 00 	call	0x1a6	; 0x1a6 <set_process>
 224:	ac e6       	ldi	r26, 0x6C	; 108
 226:	b0 e0       	ldi	r27, 0x00	; 0
 228:	21 e0       	ldi	r18, 0x01	; 1
void display(uint8 *p)
{
		uint8 sel = 0x01;
		for (uint8 i = 0; i < 4; i++)
		{
			PORTC = sel;
 22a:	25 bb       	out	0x15, r18	; 21
			PORTA = 0xff - table[p[i]];
 22c:	ed 91       	ld	r30, X+
 22e:	f0 e0       	ldi	r31, 0x00	; 0
 230:	e0 5a       	subi	r30, 0xA0	; 160
 232:	ff 4f       	sbci	r31, 0xFF	; 255
 234:	80 81       	ld	r24, Z
 236:	80 95       	com	r24
 238:	8b bb       	out	0x1b, r24	; 27
 23a:	ce 01       	movw	r24, r28
 23c:	01 97       	sbiw	r24, 0x01	; 1
 23e:	f1 f7       	brne	.-4      	; 0x23c <main+0x4e>
			_delay_ms(10);
			sel <<= 1;	
 240:	22 0f       	add	r18, r18
uint8 key1, key2;

void display(uint8 *p)
{
		uint8 sel = 0x01;
		for (uint8 i = 0; i < 4; i++)
 242:	80 e0       	ldi	r24, 0x00	; 0
 244:	a0 37       	cpi	r26, 0x70	; 112
 246:	b8 07       	cpc	r27, r24
 248:	81 f7       	brne	.-32     	; 0x22a <main+0x3c>
 24a:	e6 cf       	rjmp	.-52     	; 0x218 <main+0x2a>

0000024c <__udivmodqi4>:
 24c:	99 1b       	sub	r25, r25
 24e:	79 e0       	ldi	r23, 0x09	; 9
 250:	04 c0       	rjmp	.+8      	; 0x25a <__udivmodqi4_ep>

00000252 <__udivmodqi4_loop>:
 252:	99 1f       	adc	r25, r25
 254:	96 17       	cp	r25, r22
 256:	08 f0       	brcs	.+2      	; 0x25a <__udivmodqi4_ep>
 258:	96 1b       	sub	r25, r22

0000025a <__udivmodqi4_ep>:
 25a:	88 1f       	adc	r24, r24
 25c:	7a 95       	dec	r23
 25e:	c9 f7       	brne	.-14     	; 0x252 <__udivmodqi4_loop>
 260:	80 95       	com	r24
 262:	08 95       	ret

00000264 <__udivmodhi4>:
 264:	aa 1b       	sub	r26, r26
 266:	bb 1b       	sub	r27, r27
 268:	51 e1       	ldi	r21, 0x11	; 17
 26a:	07 c0       	rjmp	.+14     	; 0x27a <__udivmodhi4_ep>

0000026c <__udivmodhi4_loop>:
 26c:	aa 1f       	adc	r26, r26
 26e:	bb 1f       	adc	r27, r27
 270:	a6 17       	cp	r26, r22
 272:	b7 07       	cpc	r27, r23
 274:	10 f0       	brcs	.+4      	; 0x27a <__udivmodhi4_ep>
 276:	a6 1b       	sub	r26, r22
 278:	b7 0b       	sbc	r27, r23

0000027a <__udivmodhi4_ep>:
 27a:	88 1f       	adc	r24, r24
 27c:	99 1f       	adc	r25, r25
 27e:	5a 95       	dec	r21
 280:	a9 f7       	brne	.-22     	; 0x26c <__udivmodhi4_loop>
 282:	80 95       	com	r24
 284:	90 95       	com	r25
 286:	bc 01       	movw	r22, r24
 288:	cd 01       	movw	r24, r26
 28a:	08 95       	ret

0000028c <_exit>:
 28c:	f8 94       	cli

0000028e <__stop_program>:
 28e:	ff cf       	rjmp	.-2      	; 0x28e <__stop_program>

⌨️ 快捷键说明

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