Программируем pic16f73 /74/76/77 на самодельном программаторе и схемы

Программируем pic16f73, pic16f74, pic16f76, pic16f77 на самодельном простом jdm программаторе – 5 проводков.

Инструкцию (даташит) по микроконтроллерам pic16f73, pic16f74, pic16f76, pic16f77 можно скачать – здесь.

1. Микроконтроллер PIC16F73

Вот такой микроконтроллер – PIC16F73 – обнаружил в схеме старого электрического счетчика – это микроконтроллер 8-Бит, PIC, 20МГц, 7КБ (4Кx14) Flash, c АЦП, 22 I/O [DIP-28]

Схему программатора брал с предыдущей моей записи: “https://gameforstreet.ru/pic-jdm-prostejshij-programmator-dlya-pic-mk/”

Схема программатора для него будет следующая:

В электросчетчике к ней был ещё прикреплён кварц на 4МГц – поэтому в программаторе к ножкам 9 и 10 присоединил и его. Но если микросхема новая, то программируем без кварца.

Скачать inc файл для создания hex файла из asm для Pic16f73 – скачать:
-Pic16f73.inc в zip архиве
-Pic16f73.inc в tar.gz архиве.

1.1. Зажигаем светодиоды на Pic16f73

Простая программа на ассемблере – на порте С светодиоды будут гореть через один. То есть светодиоды, подключённые к ножкам 11 (RC0), 13 (RC2), 15 (RC4), 17 (RC6) – будут гореть, а светодиоды на ножках 12 (RC1), 14 (RC3), 16(RC5), 18(RC7) – светиться не будут – это задаётся следующей строчкой movlw b’01010101′ (соответственно ножки стоят так: сRC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0) – значение 1 – светодиод на ножке светиться, а 0 – нет.

Схема подключения:
, кварц от 4 МГц до 20 МГц (так как поставил _HS_OSC) – внутренний резонатор поставить нельзя, так как в файле inc такой команды – нет, значит и его использовать – нельзя.
– конденсаторы по инструкции (даташит) – берутся для не керамического кварца следующие

То есть по 15 пФ, но я взял по 20 пФ, думаю можно в диапазоне 15-47 пФ.

INCLUDE <P16F73.INC>
    ERRORLEVEL -302

__CONFIG  _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF & _BODEN_OFF


 org 0

Start
 BCF   STATUS,RP0  ; select bank 0
 CLRF  PORTA       ; porta=0
 BSF   STATUS,RP0  ; select bank 1
 movlw b'00001000'
 movwf TRISA
 CLRF  TRISC       ; make PORTC pins all output
 BCF   STATUS,RP0  ; select bank 0
 movlw b'01010101'
 movwf  PORTC       ; set portc pins equal to 0

 end

Скачать файлы hex asm inc для прошивки контроллера PIC16F73 :
– в формате zip.
– в формате tar.gz

1.2. Мигаем светодиодами на Pic16f73

Скачать файлы inc, asm, hex, c для мигания светодиодами на Pic16f73:
– в формате zip
– в формате tar.gz

Код на ассемблере (asm), светодиод будет мигать на ножках PORTA, то есть ножки со 2 по 7 (RA0-RA5):

INCLUDE <P16F73.INC>
    ERRORLEVEL -302

__CONFIG  _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF & _BODEN_OFF

Reg_1 EQU 22
Reg_2 EQU 23
Reg_3 EQU 24

 org 0

Start

BCF STATUS, RP0 ;
BCF STATUS, RP1 ; Bank0
CLRF PORTA ; Initialize PORTA by
BSF STATUS, RP0 ; Select Bank 1
MOVLW 0x07 ; Configure all pins
MOVWF ADCON1 ; as digital inputs
MOVLW 0x00 
MOVWF TRISA 
BCF   STATUS,RP0  ; select bank 0
 movlw b'00000000'
 movwf  PORTA       ; set portc pins equal to 0

loop
 movlw b'11111111'
 movwf PORTA
 call Pause
movlw b'00000000'
 movwf PORTA
call Pause
 goto loop

Pause
       movlw       0x173
       movwf       Reg_1
       movlw       0x19
       movwf       Reg_2
       movlw       0x6
       movwf       Reg_3
wr          
       decfsz      Reg_1, 1
       goto        wr
       decfsz      Reg_2, 1
       goto        wr
       decfsz      Reg_3, 1
       goto        wr
       nop
return

 end

Также вот ещё один код на СИ для мигания на Pic16f73 – на его основе я и написал код выше на ассемблере, светодиод также будет мигать на ножках PORTA, то есть ножки со 2 по 7 (RA0-RA5):

#define _XTAL_FREQ 4000000

#include <pic16f73.h>
#include <htc.h>
#include <xc.h>

__CONFIG(FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_OFF);

char counter = 0;

//Timer0
//Prescaler 1:256; 
TMR0 Preload = 61; Actual Interrupt Time : 49.92 ms

 //Place/Copy this part in declaration section
void InitTimer0() {

  OPTION_REG = 0x87;
  TMR0 = 61;
  INTCON = 0xA0;
}

void interrupt isr(void) {
    if(TMR0IF) { 
        TMR0IF = 0;
        TMR0 = 61;
       //Enter your code here
        if(++counter == 20) {
            PORTA = ~PORTA;
        }   
    }
}

void main(void) {
    ADCON1 = 0x07; 
    TRISA = 0x00;
    TRISB = 0x00; 
    TRISC = 0x00; 
    PORTA = 0x00;
    PORTB = 0x80; 
    InitTimer0();

    while(1) {
    }
}

Схема подключения:

Видео:

“rutube.ru/video/e1817d34dc4200302dec2e1e7fd55941/”

2. Микроконтроллер PIC16F77

Схему программатора брал с предыдущей моей записи: “https://gameforstreet.ru/pic-jdm-prostejshij-programmator-dlya-pic-mk/”

Схема программатора для него будет следующая:

Примечание hex прошивка для pic16f73 стояла на схеме:
– скачать в zip формате.
– скачать в tar.gz формате.

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