Внутрисхемное программирование и отладка микроконтроллеров 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 FilesMicrochipMPASM SuiteTemplateCode16F873ATEMP.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 отключен.

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

  • PIC_debug.rar (13 Кб)

Теги: