Мы начнём наше путешествие с простой тестовой программы, которая убедится, что всё настроено правильно, и мы будем готовы к более сложным экспериментам с PIC18F2550. Эта программа будет попеременно включать два встроенных светодиода (подключенных к выводам RA1 и RB1) на 500 мс.
Микроконтроллер PIC18F2550,будет работать на тактовой частоте 8,0 МГц.
Скачать файлы на Pic18f2550 (hex, asm) для мигание светодиодом:
Скачать файлы в формате zip.
Скачать файлы в формате tar.gz.
Схема соединения:
Си файл:
/* Test program for StartUSB Board Description : Two on board LEDs are flashed alternately in 500 ms MCU: PIC18F2550, External crystal = 8.0 MHz, Actual Clock = 48.0 MHz Copyright @ Rajendra Bhatt March 29, 2011 */ //Define LED connections sbit LED1 at RA1_bit; sbit LED2 at RB1_bit; void main() { CMCON = 0x07; // Disable comparators ADCON1 = 0x0F; // Disable Analog functions TRISA = 0x00; TRISB = 0x00; LED1 = 0; LED2 = 1; do { LED1 = ~LED1; LED2 = ~LED2; Delay_ms(500); } while(1); }
asm файл:
_main: ;Test_Blink.c,10 :: void main() { ;Test_Blink.c,11 :: CMCON = 0x07; // Disable comparators MOVLW 7 MOVWF CMCON+0 ;Test_Blink.c,12 :: ADCON1 = 0x0F; // Disable Analog functions MOVLW 15 MOVWF ADCON1+0 ;Test_Blink.c,13 :: TRISA = 0x00; CLRF TRISA+0 ;Test_Blink.c,14 :: TRISB = 0x00; CLRF TRISB+0 ;Test_Blink.c,15 :: LED1 = 0; BCF RA1_bit+0, 1 ;Test_Blink.c,16 :: LED2 = 1; BSF RB1_bit+0, 1 ;Test_Blink.c,17 :: do { L_main0: ;Test_Blink.c,18 :: LED1 = ~LED1; BTG RA1_bit+0, 1 ;Test_Blink.c,19 :: LED2 = ~LED2; BTG RB1_bit+0, 1 ;Test_Blink.c,20 :: Delay_ms(500); MOVLW 31 MOVWF R11, 0 MOVLW 113 MOVWF R12, 0 MOVLW 30 MOVWF R13, 0 L_main3: DECFSZ R13, 1, 1 BRA L_main3 DECFSZ R12, 1, 1 BRA L_main3 DECFSZ R11, 1, 1 BRA L_main3 NOP ;Test_Blink.c,21 :: } while(1); GOTO L_main0 ;Test_Blink.c,22 :: } GOTO $+0 ; end of _main