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


Логин:
Пароль:
О сайте:

Pic.Rkniga.ru - Сайт как для начинающих, так и для опытных радиолюбителей, разрабатывающих свои устройства на популярных PIC микроконтроллерах.
Здесь можно обмениваться сообщениями на форуме, а также добавлять на сайт статьи и схемы своих устройств.

Меню сайта
Главная Форум по PIC микроконтроллерам Форум Статьи по PIC микроконтроллерам Статьи Справочная информаци по PIC микроконтроллерам Справочник Литература по PIC микроконтроллерам Литература Схемотехника Схемотехника устройств на PIC микроконтроллерах Микроконтроллеры Программаторы Все по программированию PIC микроконтроллеров Программы, Софт Программы Ссылки Написать нам
Опрос

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


MPLab/MPLabX
MicroC
MicroBasic
MicroPascal
Другой


Последние материалы
  • Каршеринг в Москве - это Просто, Удобно и Недорого.
  • Кнопка On/OFF на PIC12F629.
  • Часы с синхронизацией от китайского будильника
  • ШИМ регулятор на PIC16F628A.
  • Счетчики прямого и обратного счета на PIC16F628A.
  • Таймер отключения питания для мультиметра и не только.
  • Программирование на C микроконтроллеров PIC24
  • Измеритель напряжения и тока
  • Маршрутный компьютер для электровелосипеда
  • Простой двухканальный термометр на PIC16F690 и датчиках DS18B20
  • Популярные материалы
    Случайная книга
    Программирование устройств на PIC микроконтроллерах » Статьи » Внутрисхемное программирование и отладка микроконтроллеров Microchip
    Внутрисхемное программирование и отладка микроконтроллеров Microchip
    Автор публикации: alex Просмотров: 8105 Добавлен: 31-10-2012, 09:08 Комментарии: 0

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

    Схема на МК

    Данный прибор может быть собран на демонстрационной (отладочной) плате  фирмы 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.

    Скачать интегрированную среду разработки MPLAB IDE v8.15 можно на сайте http://www.microchip.com/.

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

    Select Device

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

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

    Project Wizard

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

    Project Wizard

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

    Project Wizard

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

    Project Wizard

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

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

    Project Wizard

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

    Project Wizard

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

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

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

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

    Project Wizard

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

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

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

    Открылся файл 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.

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

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

    Для внутрисхемной отладки в меню нужно выбрать 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.

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

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



    В архиве файлы проекта

    picdebug.rar [13,64 Kb] (cкачиваний: 298)

    Категория: Статьи, PIC16
    « Назад
    Комментарии