Мы начнём наше путешествие с простой тестовой программы, которая убедится, что всё настроено правильно, и мы будем готовы к более сложным экспериментам с 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


