Реклама ⓘ
Главная » Микроконтроллеры
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Похожие статьи:


Реклама ⓘ

Внутрисхемное программирование и отладка микроконтроллеров Microchip

Для демонстрации внутрисхемного программирования и отладки микроконтроллера соберём простую схему. Задача данного прибора будет сводится к миганию светодиода.

Схема на МК

Данный прибор может быть собран на демонстрационной (отладочной) плате фирмы Microchip PICDEM 2 PLUS. Схему демонстрационной платы PICDEM 2 PLUS и техническую спецификацию программируемого микроконтроллера можно найти на сайте http://www.microchip.com/.Источник питания схемы должен давать напряжение 9-15В и ток не менее 0,5А. Стоит отметить, что конденсаторами C1 и C2 можно пренебречь, они обеспечивают стабильность работы кварцевого резонатора ZQ1.

MPLAB IDE v8.15

Показана рабочая область MPLAB IDE v8.15.

В меню выбираем Configure -> Select Device…

Select Device

Выбрав программируемый микроконтроллер PIC16F873A, нажимаем «OK».

В меню выбираем Project -> Project Wizard…

Project Wizard

Нажимаем «Далее».

Project Wizard

Подтверждаем выбранный микроконтроллер нажатием «Далее».

Project Wizard

Выбрав компилятор, нажимаем «Далее».

Project Wizard

Нажав «Browse…» выбираем папку и имя фала.

mc148-8.png

Указываем имя файла «LED» в папке«LED» и нажимаем «Сохранить».

Project Wizard

Нажимаем «Далее».

Project Wizard

Выбираем путь к файлу, где будет написан код программы (листинг)

C:\Program Files\Microchip\MPASM Suite\Template\Code\16F873ATEMP.ASM

Нажимаем «Add>>», затем выбираем «С».

Нажимаем «Далее».

Project Wizard

Появилась заключающие окно, нажимаем «Готово».

mc148-12.jpg

Файлы в созданном проекте «LED» указаны в окне (сверху справа)LED.mcw

Нажимаем на надпись «16F873ATEMP.ASM».

mc148-13.jpg

Открылся файл 16F873ATEMP.ASM, где будет написан код программы на ассемблере.

Алгоритм

Изображен алгоритм. Время паузы должно быть достаточным для человека способного различить мигание светодиода.


;**********************************************************************
;   This file is a basic code template for assembly code generation   *
;   on the PIC16F873A. This file contains the basic code              *
;   building blocks to build upon.                                    *
;                                                                     *
;   Refer to the MPASM User's Guide for additional information on     *
;   features of the assembler (Document DS33014).                     *
;                                                                     *
;   Refer to the respective PIC data sheet for additional             *
;   information on the instruction set.                               *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Filename:	    xxx.asm                                           *
;    Date:                                                            *
;    File Version:                                                    * 
;                                                                     *
;    Author:                                                          *
;    Company:                                                         *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Files Required: P16F873A.INC                                     *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Notes:                                                           *
;                                                                     *
;**********************************************************************

list		p=16f873A	; list directive to define processor
#include		; processor specific variable definitions

__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _HS_OSC & _WRT_OFF & _LVP_ON & _CPD_OFF

; '__CONFIG' directive is used to embed configuration data within .asm file.
; The lables following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.

;***** VARIABLE DEFINITIONS
w_temp		EQU	0x20		; variable used for context saving
w_temp1		EQU	0xA0		; reserve bank1 equivalent of w_temp
status_temp	EQU	0x21		; variable used for context saving
pclath_temp	EQU	0x22		; variable used for context saving

PAUSE1 equ 0x23
PAUSE2 equ 0x24
PAUSE3 equ 0x25

;**********************************************************************
ORG     0x000             ; processor reset vector

nop			  ; nop required for icd
goto    main              ; go to beginning of program

ORG     0x004             ; interrupt vector location

movwf   w_temp            ; save off current W register contents
movf	STATUS,w          ; move status register into W register
bcf     STATUS,RP0        ; ensure file register bank set to 0
movwf	status_temp       ; save off contents of STATUS register
movf	PCLATH,w	  ; move pclath register into w register
movwf	pclath_temp	  ; save off contents of PCLATH register

; isr code can go here or be located as a call subroutine elsewhere

bcf     STATUS,RP0        ; ensure file register bank set to 0
movf	pclath_temp,w	  ; retrieve copy of PCLATH register
movwf	PCLATH		      ; restore pre-isr PCLATH register contents
movf    status_temp,w     ; retrieve copy of STATUS register
movwf	STATUS            ; restore pre-isr STATUS register contents
swapf   w_temp,f
swapf   w_temp,w          ; restore pre-isr W register contents
retfie                    ; return from interrupt

;**********************************************************************
main                   call    Ports_Initialization
Cycle                  bsf     PORTB,0
                           call    Pause
                           bcf     PORTB,0
                           call    Pause
                           goto   Cycle
;**********************************************************************
;************************ Ports Initialization ************************
;**********************************************************************
Ports_Initialization   clrf       PORTA
                                clrf       PORTB
                                clrf       PORTC
                                clrf       CCP1CON
                                bsf       STATUS,RP0
                                bcf       STATUS,RP1
                                movlw  0x06
                                movwf  ADCON1
                                movlw  0x00
                                movwf  TRISA
                                movlw  0x00
                                movwf  TRISB
                                movlw  0x00
                                movwf  TRISC
                                bcf        STATUS,RP0
                                return
;**********************************************************************
;******************************* Pause ********************************
;**********************************************************************
Pause                    clrf       PAUSE1
                              clrf       PAUSE2
                              movlw  0x04
                              movwf  PAUSE3
Pause_1                decfsz  PAUSE1,f
                              goto     Pause_1
                              decfsz  PAUSE2,f
                              goto     Pause_1
                              decfsz  PAUSE3,f
                              goto     Pause_1
                              return
;**********************************************************************
END                       ; directive 'end of program'

Вот листинг, который должен быть в файле 16F873ATEMP.ASM.

mc148-15.jpg

В конфигурации микроконтроллера указываем _HS_OSC, так как внешний кварцевый резонатор будет с рабочей частотой 20 МГц. Присваиваем статической ОЗУ (SRAM) новые регистры PAUSE1 – PAUSE3.

В меню выбираем View-> File Registers, где отображается вся статическая ОЗУ (SRAM) микроконтроллера.

mc148-16.jpg

Для внутрисхемной отладки в меню нужно выбрать Debugger -> Select Tool -> 1 MPLAB ICD 2.

Собрав схему на демонстрационной плате и подключив к ней питание и внутрисхемный отладчик, нажмём «Reset and Connect to ICD», если устройство готово к работе нажимаем «Program target device» и запускаем отладку нажав «Run».

Структурная связь

Структурная связь всех используемых компонентов для внутрисхемной отладки и программирования.

Подключение отладочной платы PICDEM 2 PLUS

Показано подключение отладочной платы PICDEM 2 PLUS с микроконтроллером PIC16F873A к источнику питания и внутрисхемному отладчику MPLAB ICD 2. Во время отладки мигает светодиод, подключенный к выводу микроконтроллера RB0.

mc148-19.jpg

Для самостоятельной работы, микроконтроллер нужно запрограммировать. Для этого выбираем в меню Programmer -> Select Programmer -> MPLAB ICD 2. Затем «Reset and Connect to ICD», если устройство готово к работе нажимаем «Program target device», проверяем нажатием «Verify target device memory».

mc148-20.jpg

Теперь микроконтроллер самостоятельно выполняет запрограммированные в него инструкции. Внутрисхемный отладчик MPLAB ICD 2 отключен.

Прикрепленные файлы:

Теги:

Ковалев Антон Юрьевич Опубликована: 2012 г. 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (0) | Я собрал (0) | Подписаться

Статью еще никто не комментировал. Вы можете стать первым.
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется напряжение?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

AVR-программатор USB ASP
AVR-программатор USB ASP
FM-модуль RDA5807M Конструктор УНЧ 60 Вт на LM3886
вверх