|
Приветствую. Возникла необходимость написать прошивку под pic12F675, и отладить ее в протеусе. Генератор - внутренний. Проблема в том что симуляция в не работает, генератор не фурычит MCLR подтянут через 10к. Нашел вроде что константу нужно прописать по адресу 0x03FF , прописал туда 343C, не помогло. Может кто сталкивался, подскажите как запустить этот триплет. Вот тестовый код: #include <12F675.h> #device adc=8 #use delay(clock=4000000) #fuses INTRC,PUT,NOWDT void main() { setup_comparator( NC_NC_NC_NC ); // disable comparators setup_adc_ports( NO_ANALOGS ); // disable analog inputs setup_adc( ADC_OFF ); // disable A2D while (0) { output_high(PIN_A0); delay_us(10); output_low(PIN_A0); } } |
|
|
Модель PIC12675 в проте работает замечательно, правда я использую asm. Протеусу все равно какой фьюз на генераторе, частота тактирования задается в настройках МК, надеюсь путь к хексу в настройках указан? Какие сообщения выдает прот? Может попробовать не в связке MPLAB+CCS+Proteus, а сгенерить хекс и скормить его проту? |
|
|
Вот шот из протеуса, а вод дезассемблированная прошивка. В ассемблере не силен :-\, поэтому пишу на С --- C:\pic_projects\pll_transmitter\main.c ----------------------------------------------------- 1: #include <12F675.h> 000 3000 MOVLW 0 001 008A MOVWF 0xa 002 2804 GOTO 0x4 003 0000 NOP 004 23FF CALL 0x3ff 005 1683 BSF 0x3, 0x5 006 0090 MOVWF 0x10 007 3000 MOVLW 0 008 008A MOVWF 0xa 009 280A GOTO 0xa 2: #device adc=8 3: #use delay(clock=4000000) 4: #fuses INTRC,PUT,NOWDT 5: 6: void main() 7: { 00A 0184 CLRF 0x4 00B 301F MOVLW 0x1f 00C 0583 ANDWF 0x3, F 00D 131F BCF 0x1f, 0x6 00E 1683 BSF 0x3, 0x5 00F 101F BCF 0x1f, 0 010 109F BCF 0x1f, 0x1 011 111F BCF 0x1f, 0x2 012 119F BCF 0x1f, 0x3 013 3007 MOVLW 0x7 014 1283 BCF 0x3, 0x5 015 0099 MOVWF 0x19 8: setup_comparator( NC_NC_NC_NC ); // disable comparators 016 3007 MOVLW 0x7 017 0099 MOVWF 0x19 018 1683 BSF 0x3, 0x5 019 0805 MOVF 0x5, W 01A 3003 MOVLW 0x3 01B 1283 BCF 0x3, 0x5 01C 00A0 MOVWF 0x20 01D 0BA0 DECFSZ 0x20, F 01E 281D GOTO 0x1d 01F 0819 MOVF 0x19, W 020 118C BCF 0xc, 0x3 9: setup_adc_ports( NO_ANALOGS ); // disable analog inputs 021 131F BCF 0x1f, 0x6 022 1683 BSF 0x3, 0x5 023 101F BCF 0x1f, 0 024 109F BCF 0x1f, 0x1 025 111F BCF 0x1f, 0x2 026 119F BCF 0x1f, 0x3 10: setup_adc( ADC_OFF ); // disable A2D 027 1283 BCF 0x3, 0x5 028 101F BCF 0x1f, 0 11: set_tris_a(0x8); 029 3008 MOVLW 0x8 02A 1683 BSF 0x3, 0x5 02B 0085 MOVWF 0x5 12: while (0) 13: { 14: output_high(PIN_A0); 15: delay_us(10); 16: output_low(PIN_A0); 17: } 02C 0063 SLEEP
|
|
|
Вроде разобрался. AlexAlcoa, спасибо за наводку! Действительно не генерился код. Но не из за лицензии. Заработало когда переписал код в таком виде(см ниже) Но вот клоков с внутреннего генератора на ClockOut (3я нога) так и нет. Как можно вывести внутренний генератор наружу? #include <12F675.h> #device adc=8 #use delay(clock=4000000) #fuses INTRC,PUT,NOWDT int1 key; void main() { setup_comparator( NC_NC_NC_NC ); // disable comparators setup_adc_ports( NO_ANALOGS ); // disable analog inputs setup_adc( ADC_OFF ); // disable A2D set_tris_a(0x8); key = false; while (!key) { output_high(PIN_A0); delay_us(10); output_low(PIN_A0); } } |
|