Мигаем светодиодом на Pic18f2550 (hex, asm)

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *