ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
26 ноября
67183 Топик полностью
jaga-jaga (30.08.2006 15:32, просмотров: 1) ответил AVR на 2 mse, jaga-jaga, Silence, AF: нашел-таки ту писькомерялку, но не понял главного
Ответ: при входе-выходе из обработчика контекст можно не сохранять - в main'е ничего не используется. задержка на вход 3 программных такта, выход (retfie) - два.
           	psect	intcode
             _isr
             int_func
             ;tst16.c: 24: TMR0 -= 199;
             	movlw	-199
             	clrf	3	;select bank 0
             	addwf	1	;volatile
             ;tst16.c: 25: T0IF = 0;
             	bcf	11,2
             ;tst16.c: 26: if(--refr)
             	decf	_refr
             	btfsc	3,2
             	goto	l4
             ;tst16.c: 27: {
             	decf	_chan
             	btfsc	3,2
             	goto	l5
             	bsf	6,0
             l5
             ;tst16.c: 29: if(--(chan[1])) RB1 = 1;
             	decfsz	_chan+1
             	bsf	6,1
             ;tst16.c: 30: if(--(chan[2])) RB2 = 1;
             	decfsz	_chan+2
             	bsf	6,2
             ;tst16.c: 31: if(--(chan[3])) RB3 = 1;
             	decfsz	_chan+3
             	bsf	6,3
             ;tst16.c: 32: if(--(chan[4])) RB4 = 1;
             	decfsz	_chan+4
             	bsf	6,4
             ;tst16.c: 33: if(--(chan[5])) RB5 = 1;
             	decfsz	_chan+5
             	bsf	6,5
             ;tst16.c: 34: if(--(chan[6])) RB6 = 1;
             	decfsz	_chan+6
             	bsf	6,6
             ;tst16.c: 35: if(--(chan[7])) RB7 = 1;
             	decfsz	_chan+7
             	bsf	6,7
             ;tst16.c: 36: if(--(chan[8])) RC0 = 1;
             	decfsz	_chan+8
             	bsf	7,0
             ;tst16.c: 37: if(--(chan[9])) RC1 = 1;
             	decfsz	_chan+9
             	bsf	7,1
             ;tst16.c: 38: if(--(chan[10])) RC2 = 1;
             	decfsz	_chan+10
             	bsf	7,2
             ;tst16.c: 39: if(--(chan[11])) RC3 = 1;
             	decfsz	_chan+11
             	bsf	7,3
             ;tst16.c: 40: if(--(chan[12])) RC4 = 1;
             	decfsz	_chan+12
             	bsf	7,4
             ;tst16.c: 41: if(--(chan[13])) RC5 = 1;
             	decfsz	_chan+13
             	bsf	7,5
             ;tst16.c: 42: if(--(chan[14])) RE0 = 1;
             	decfsz	_chan+14
             	bsf	9,0
             ;tst16.c: 43: if(--(chan[15])) RE1 = 1;
             	decfsz	_chan+15
             	bsf	9,1
             ;tst16.c: 44: if(--(chan[16])) RD0 = 1;
             	decfsz	_chan+16
             	bsf	8,0
             ;tst16.c: 45: if(--(chan[17])) RD1 = 1;
             	decfsz	_chan+17
             	bsf	8,1
             ;tst16.c: 46: if(--(chan[18])) RD2 = 1;
             	decfsz	_chan+18
             	bsf	8,2
             ;tst16.c: 47: if(--(chan[19])) RD3 = 1;
             	decfsz	_chan+19
             	bsf	8,3
             ;tst16.c: 48: if(--(chan[20])) RD4 = 1;
             	decfsz	_chan+20
             	bsf	8,4
             ;tst16.c: 49: if(--(chan[21])) RD5 = 1;
             	decfsz	_chan+21
             	bsf	8,5
             ;tst16.c: 50: if(--(chan[22])) RD6 = 1;
             	decfsz	_chan+22
             	bsf	8,6
             ;tst16.c: 51: if(--(chan[23])) RD7 = 1;
             	decf	_chan+23
             	btfsc	3,2
             	goto	l3
             	bsf	8,7
             ;tst16.c: 52: }
             ;tst16.c: 53: else
             	goto	l3
             l4
             ;tst16.c: 54: {
             	movf	_val,w
             	movwf	_chan
             ;tst16.c: 56: chan[1] = val[1];
             	movf	_val+1,w
             	movwf	_chan+1
             ;tst16.c: 57: chan[2] = val[2];
             	movf	_val+2,w
             	movwf	_chan+2
             ;tst16.c: 58: chan[3] = val[3];
             	movf	_val+3,w
             	movwf	_chan+3
             ;tst16.c: 59: chan[4] = val[4];
             	movf	_val+4,w
             	movwf	_chan+4
             ;tst16.c: 60: chan[5] = val[5];
             	movf	_val+5,w
             	movwf	_chan+5
             ;tst16.c: 61: chan[6] = val[6];
             	movf	_val+6,w
             	movwf	_chan+6
             ;tst16.c: 62: chan[7] = val[7];
             	movf	_val+7,w
             	movwf	_chan+7
             ;tst16.c: 63: chan[8] = val[8];
             	movf	_val+8,w
             	movwf	_chan+8
             ;tst16.c: 64: chan[9] = val[9];
             	movf	_val+9,w
             	movwf	_chan+9
             ;tst16.c: 65: chan[10] = val[10];
             	movf	_val+10,w
             	movwf	_chan+10
             ;tst16.c: 66: chan[11] = val[11];
             	movf	_val+11,w
             	movwf	_chan+11
             ;tst16.c: 67: chan[12] = val[12];
             	movf	_val+12,w
             	movwf	_chan+12
             ;tst16.c: 68: chan[13] = val[13];
             	movf	_val+13,w
             	movwf	_chan+13
             ;tst16.c: 69: chan[14] = val[14];
             	movf	_val+14,w
             	movwf	_chan+14
             ;tst16.c: 70: chan[15] = val[15];
             	movf	_val+15,w
             	movwf	_chan+15
             ;tst16.c: 71: chan[16] = val[16];
             	movf	_val+16,w
             	movwf	_chan+16
             ;tst16.c: 72: chan[17] = val[17];
             	movf	_val+17,w
             	movwf	_chan+17
             ;tst16.c: 73: chan[18] = val[18];
             	movf	_val+18,w
             	movwf	_chan+18
             ;tst16.c: 74: chan[19] = val[19];
             	movf	_val+19,w
             	movwf	_chan+19
             ;tst16.c: 75: chan[20] = val[20];
             	movf	_val+20,w
             	movwf	_chan+20
             ;tst16.c: 76: chan[21] = val[21];
             	movf	_val+21,w
             	movwf	_chan+21
             ;tst16.c: 77: chan[22] = val[22];
             	movf	_val+22,w
             	movwf	_chan+22
             ;tst16.c: 78: chan[23] = val[23];
             	movf	_val+23,w
             	movwf	_chan+23
             ;tst16.c: 79: refr = 250;
             	movlw	-6
             	movwf	_refr
             ;tst16.c: 80: PORTB = 0;
             	clrf	6	;volatile
             ;tst16.c: 81: PORTD = 0;
             	clrf	8	;volatile
             ;tst16.c: 82: PORTE = 0;
             	clrf	9	;volatile
             ;tst16.c: 83: PORTC &= 0b11000000;
             	movlw	-64
             	andwf	7	;volatile