89: rom const char SINE_TABLE []={ 90: 0x80,0x7A,0x74,0x6E,0x68,0x62,0x5C,0x56, 91: 0x50,0x4A,0x45,0x3F,0x3A,0x35,0x30,0x2B, 92: 0x27,0x22,0x1E,0x1A,0x17,0x14,0x10,0x0E, 93: 0x0B,0x09,0x07,0x05,0x04,0x03,0x02,0x02, 94: 0x01,0x02,0x02,0x03,0x04,0x05,0x07,0x09, 95: 0x0B,0x0E,0x10,0x14,0x17,0x1A,0x1E,0x22, 96: 0x27,0x2B,0x30,0x35,0x3A,0x3F,0x45,0x4A, 97: 0x50,0x56,0x5C,0x62,0x68,0x6E,0x74,0x7A, 98: 0x80,0x87,0x8D,0x93,0x99,0x9F,0xA5,0xAB, 99: 0xB1,0xB7,0xBC,0xC2,0xC7,0xCC,0xD1,0xD6, 100: 0xDA,0xDF,0xE3,0xE7,0xEA,0xED,0xF1,0xF3, 101: 0xF6,0xF8,0xFA,0xFC,0xFD,0xFE,0xFF,0xFF, 102: 0xFF,0xFF,0xFF,0xFE,0xFD,0xFC,0xFA,0xF8, 103: 0xF6,0xF3,0xF1,0xED,0xEA,0xE7,0xE3,0xDF, 104: 0xDA,0xD6,0xD1,0xCC,0xC7,0xC2,0xBC,0xB7, 105: 0xB1,0xAB,0xA5,0x9F,0x99,0x93,0x8D,0x87, 106: 0x81,0x7A,0x74,0x6E,0x68,0x62,0x5C,0x56, 107: 0x50,0x4A,0x45,0x3F,0x3A,0x35,0x30,0x2B, 108: 0x27,0x22,0x1E,0x1A,0x17,0x14,0x10,0x0E, 109: 0x0B,0x09,0x07,0x05,0x04,0x03,0x02,0x02, 110: 0x01,0x02,0x02,0x03,0x04,0x05,0x07,0x09, 111: 0x0B,0x0E,0x10,0x14,0x17,0x1A,0x1E,0x22, 112: 0x27,0x2B,0x30,0x35,0x3A,0x3F,0x45,0x4A, 113: 0x50,0x56,0x5C,0x62,0x68,0x6E,0x74,0x7A, 114: 0x80,0x87,0x8D,0x93,0x99,0x9F,0xA5,0xAB, 115: 0xB1,0xB7,0xBC,0xC2,0xC7,0xCC,0xD1,0xD6, 116: 0xDA,0xDF,0xE3,0xE7,0xEA,0xED,0xF1,0xF3, 117: 0xF6,0xF8,0xFA,0xFC,0xFD,0xFE,0xFF,0xFF, 118: 0xFF,0xFF,0xFF,0xFE,0xFD,0xFC,0xFA,0xF8, 119: 0xF6,0xF3,0xF1,0xED,0xEA,0xE7,0xE3,0xDF, 120: 0xDA,0xD6,0xD1,0xCC,0xC7,0xC2,0xBC,0xB7, 121: 0xB1,0xAB,0xA5,0x9F,0x99,0x93,0x8D,0x87}; *************************************************** routine update accumulateur en 35 cycles **************************************************** 577: do 578: { 579: // maj de l'accumulateur 24 bits 580: //ultoa( U1.ACCUMULATEUR,&Texte[0]); // verification en ascii 581: //k=PutStr_RS(Texte); // renvoi sur ecran 582: //Put_RS(9); 583: U1.ACCUMULATEUR = (U1.ACCUMULATEUR + MV.Cons_DDS) ; //& 0x00FFFFFF ; 0B16 0ECB MOVLW 0xcb //1 0B18 6EE9 MOVWF 0xfe9, ACCESS //1 0B1A 0E01 MOVLW 0x1 //1 0B1C 6EEA MOVWF 0xfea, ACCESS //1 0B1E 51CF MOVF 0xcf, W, BANKED //1 0B20 24EE ADDWF 0xfee, W, ACCESS //1 0B22 6FCF MOVWF 0xcf, BANKED //1 0B24 51D0 MOVF 0xd0, W, BANKED //1 0B26 20EE ADDWFC 0xfee, W, ACCESS //1 0B28 6FD0 MOVWF 0xd0, BANKED //1 0B2A 51D1 MOVF 0xd1, W, BANKED //1 0B2C 20EE ADDWFC 0xfee, W, ACCESS //1 0B2E 6FD1 MOVWF 0xd1, BANKED //1 0B30 51D2 MOVF 0xd2, W, BANKED //1 0B32 20EE ADDWFC 0xfee, W, ACCESS //1 0B34 6FD2 MOVWF 0xd2, BANKED //1 584: s_count=SINE_TABLE[U1.ACCU.pv2]; // sortie DAC 0B36 51D1 MOVF 0xd1, W, BANKED //1 0B38 6AF7 CLRF 0xff7, ACCESS //1 0B3A 0F98 ADDLW 0x98 //1 0B3C 6EF6 MOVWF 0xff6, ACCESS //1 0B3E 0E15 MOVLW 0x15 //1 0B40 22F7 ADDWFC 0xff7, F, ACCESS //1 0B42 0008 TBLRD* //2 Table Read with post-increment 0B44 CFF5 MOVFF 0xff5, 0x195 //1 0B46 F195 NOP //1 585: PORTB=s_count; 0B48 C195 MOVFF 0x195, 0xf81 //1 0B4A FF81 NOP //1 586: //Write_Word(U1.ACCU.pv2);Put_RS(9); 587: //Octet2Hex(s_count); 588: // Write_Word(s_count); CRLF(); 589: // Tempo(1000L); 590: } 591: while (ptlec == ptecr); // boucle sans fin (hormis sortie par interrupt car 0B4C 51A2 MOVF 0xa2, W, BANKED //1 0B4E 19A0 XORWF 0xa0, W, BANKED //1 0B50 E102 BNZ 0xb56 //1 0B52 51A3 MOVF 0xa3, W, BANKED //1 0B54 19A1 XORWF 0xa1, W, BANKED //1 0B56 E0DF BZ 0xb16 //2 592: Put_RS('.'); *********************************************************************************