208
Микроконтроллёрын систем (Embedded system) (ES304)

PIC Pictures

Embed Size (px)

Citation preview

Page 1: PIC Pictures

Микроконтроллёрын систем

(Embedded system)

(ES304)

Page 2: PIC Pictures

• Хэрэглээний мужууд

• Ерөнхий бүтэц ба ажиллагаа

• Контроллёрууд, тэдгээрийн програмчилал

• Жишээнүүд

Page 3: PIC Pictures

“Microchip” фирмийн контроллёр

Page 4: PIC Pictures
Page 5: PIC Pictures

PIC18F452

Дотоод бүтэц

8255

8253

8251

Page 6: PIC Pictures
Page 7: PIC Pictures
Page 8: PIC Pictures
Page 9: PIC Pictures

SFR

Page 10: PIC Pictures
Page 11: PIC Pictures

RESET логикийн бүтэц

Page 12: PIC Pictures

OR

RESET логикийн бүтэц

Page 13: PIC Pictures
Page 14: PIC Pictures
Page 15: PIC Pictures
Page 16: PIC Pictures

PIC-ийн техник хангамжтай

ажиллах “С” функцүүд

Page 17: PIC Pictures
Page 18: PIC Pictures
Page 19: PIC Pictures
Page 20: PIC Pictures

Оролт-гаралтыг програмчилах жишээ

While(input(pin_b7)&&input(pin_b6))

{

output_c (input_d()|0xe0);

output_bit (pin_b0, input(!pin_c1));

}

Page 21: PIC Pictures

- циклийн

Page 22: PIC Pictures

- Миллисекундийн

Page 23: PIC Pictures

- микросекундийн

Page 24: PIC Pictures
Page 25: PIC Pictures

Аналог-тоо хувиргуурын

модуль Analog to digital converter

Page 26: PIC Pictures

Аналог-тоо хувиргуурын

модуль

Page 27: PIC Pictures

SETUP_ADC_PORTs(); SETUP_ADC(); SET_ADC_CHANNEL(); READ_ADC();

Аналог-тоо хувиргуурын программчлал

Page 28: PIC Pictures

Аналог-тоо хувиргуурын программчлал

Page 29: PIC Pictures

Аналог-тоо хувиргуурын программчлал

Page 30: PIC Pictures

Аналог-тоо хувиргуурын программчлал

Page 31: PIC Pictures

Аналог-тоо хувиргуурыг програмчлах

жишээ

273

)(lnln

13

TT

RCRBAT

CVKe

VIR reft

4

4

max

max

Page 32: PIC Pictures

Аналог-тоо хувиргуурыг програмчлах

жишээ

#include "D:\Installs\PICC\Examples\abm.h“

#include “math.h”

Float resistor, volt;

void main()

{

setup_adc_ports(RA0_RA1_ANALOG_RA3_REF);

setup_adc(ADC_CLOCK_INTERNAL);

do

{

while(input(pin_b1));

while(!input(pin_b1));

set_adc_channel(0);

delay_us(12);

resistor=read_adc(adc_start_and_read);

set_adc_channel(1);

delay_us(12);

volt=read_adc(adc_start_and_read);

processing();

}while(true);

}

Page 33: PIC Pictures

processing()

{

float tempc, evolt, K, A, B, C, lnx;

lnx=log(resistor);

tempc=1/(A+B*lnx+C*lnx*lnx*lnx)-273;

evolt=volt/K;

}

273

)(lnln

13

TT

RCRBAT

C

Page 34: PIC Pictures
Page 35: PIC Pictures

Таймер-тоолуурууд

PIC18F452 нь нийт 4 таймер-тоолууртай : - timer 0, timer 1, timer 2, timer 3

PIC16F877 нь нийт 3 таймер-тоолууртай : - Timer 0, timer 1, timer 2

Page 36: PIC Pictures

SETUP_TIMERx(mode); value=GET_TIMERx(); SET_TIMERx(value);

Таймер-тоолуурууд

Page 37: PIC Pictures

Таймер-тоолуурууд

Page 38: PIC Pictures

Таймер-тоолуурууд

0xFD5

Page 39: PIC Pictures

Таймер-тоолуурууд

Page 40: PIC Pictures

OxFCD

Таймер-тоолуурууд

Page 41: PIC Pictures

20‟000‟000Hz/4

5‟000‟000Hz ->T=200ns

200ns*4=800ns

800ns*0xC0=153.6us

153.6us*2=307.2us

oscilloscope

Таймер-тоолуурууд

Page 42: PIC Pictures

0xFCA

Page 43: PIC Pictures

PIC

18F452

20MHz

oscilloscope

PB0

307.2us-? 460.3us-?

Таймер-тоолуурууд

#include "D:\Installs\PICC\Examples\mba.h"

void main()

{

setup_adc_ports(NO_ANALOGS);

setup_adc(ADC_OFF);

setup_psp(PSP_DISABLED);

setup_spi(FALSE);

setup_wdt(WDT_OFF);

setup_timer_0(RTCC_INTERNAL);

setup_timer_1(T1_DISABLED);

setup_timer_2(T2_DIV_BY_4, 0xc0, 2);

setup_timer_3(T3_DISABLED|T3_DIV_BY_1);

enable_interrupts(INT_TIMER2);

enable_interrupts(GLOBAL);

while(true)

{

while(!t2if);

output_high(pin_b0);

output_low(pin_b0);

}

}

Page 44: PIC Pictures

Таймер-тоолуурууд

Page 45: PIC Pictures

#define T3_DISABLED 0

#define T3_INTERNAL 0x85

#define T3_EXTERNAL 0x87

#define T3_EXTERNAL_SYNC 0x83

#define T3_DIV_BY_1 0

#define T3_DIV_BY_2 0x10

#define T3_DIV_BY_4 0x20

#define T3_DIV_BY_8 0x30

0x85=10000101b

0x10=00010000b

0x95=10010101b

“or”

setup_timer3(t3_internal | t3_div_by_2);

Page 46: PIC Pictures

Таймерт утга олгох функцүүд

Таймер-тоолуурууд

Page 47: PIC Pictures

Таймер-тоолуурууд #include "D:\Installs\PICC\Examples\mba1.h"

void main()

{

int16 count=0;

setup_adc_ports(NO_ANALOGS);

setup_adc(ADC_OFF);

setup_psp(PSP_DISABLED);

setup_spi(FALSE);

setup_wdt(WDT_OFF);

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);

setup_timer_1(T1_DISABLED);

setup_timer_2(T2_DISABLED,0,1);

setup_timer_3(T3_EXTERNAL|T3_DIV_BY_1);

disable_interrupts(global);

while(true)

{

set_timer0(0xb3b5); //5000000:256=19531

set_timer3(0);

t3on=true;

while(!t0if);

t3on=false;

count=get_timer3();

}

}

Page 48: PIC Pictures
Page 49: PIC Pictures

Тасалдал

Page 50: PIC Pictures

Тасалдал үүсэхэд хийгдэх үйлдлүүд

бодлого

Тасалдал үйлчлэх програм

бодлого

хугацаа

Тасалдал хүсэх

процессорын

төлөвийг

хадгалах

Процессорын

төлөвийг

сэргээх

Тасалдал

Page 51: PIC Pictures

Тасалдал

Page 52: PIC Pictures

Тасалдал

PIC –ийн тасалдлыг удирдах битүүдийг агуулсан регистрүүд

Page 53: PIC Pictures

Тасалдал

Page 54: PIC Pictures

Тасалдал

Page 55: PIC Pictures

Тасалдал Аналог-тоо хувиргалт дууссан

Аналог-тоо хувиргалтын хугацаа дууссан

Түгээгүүр дэхь өгөгдлийн давхцалт

Товчлуур дарагдсан СС горим идэвхжсэн 1 СС горим идэвхжсэн 2 Компаратор төлөвөө өөрчилсөн

Бичлэг дууссан Гадаад тасалдал Гадаад тасалдал 1

Гадаад тасалдал 2 I2C тасалдал LCD идэвхжсэн

LVD идэвхжсэн

Зэрэгцээ портын өгөгдөл В портын төлөв өөрчлөгдсөн

С портын төлөв өөрчлөгдсөн

Цуваа өгөгдөл ирсэн

SPI идэвхжсэн

Таймер0 дүүрсэн

Таймер1 дүүрсэн Таймер2 дүүрсэн

Таймер3 дүүрсэн

Цуваа өгөгдөл дамжиж дууссан

Таймер0 дүүрсэн

Page 56: PIC Pictures

Тасалдал

Page 57: PIC Pictures

Тасалдал Урьтамж буюу Приоритет тогтоох нь

FA2h

F9Fh 7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0

18F452.h файл дотор дараахи мөрүүдийг нэмж зарлана

#byte INTCON2 0xFF1 #byte IPR1 0xF9F #byte IPR2 0xFA2 #bit PSPIP 0xF9F.7 #bit ADIP 0xF9F.6 ……… #bit T2IP 0xF9F.1 …….. #bit T3IP 0xFA2.1 #bit CCP2IP 0xFA2.0

FF1h

Page 58: PIC Pictures

Жишээ нь: timer0, timer3, ccp1, ad өндөр урьтамж

timer1,timer2, ccp2, psp нам урьтамж

……….

IPR1=0x44; //01***100b

IPR2=0x02; //******10b

…………

T3IP=true;

Эх коодын файлд дараахи мөрүүдийг нэмнэ.

Page 59: PIC Pictures
Page 60: PIC Pictures

Тасалдал

Page 61: PIC Pictures

Тасалдал

Page 62: PIC Pictures

#define INT_TIMER0 0xF220

#define INT_TIMER3 0xA002

#define INT_RB 0xF208

#define INT_AD 0x9D40

#define INT_RDA 0x9D20

#define INT_CCP1 0x9D04

#define INT_LOWVOLT 0xA004

#define GLOBAL 0xF2C0

void main()

{

setup_adc_ports(RA0_ANALOG);

. . . . . .

enable_interrupts(INT_TIMER0);

enable_interrupts(INT_TIMER3);

enable_interrupts(INT_RB);

enable_interrupts(INT_AD);

enable_interrupts(INT_RDA);

enable_interrupts(INT_CCP1);

enable_interrupts(INT_LOWVOLT);

enable_interrupts(GLOBAL);

}

FA0 – PIE2

18F452.h файлд

зарласан текстүүд

Тасалдал

FF2 – INTCON

F9D – PIE1

Page 63: PIC Pictures

Тасалдал

#int_TIMER1 TIMER1_isr() { //Timer1-ийн тасалдыг үйлчлэх дэд прог. }

#int_AD AD_isr() { //АТХ-ийн тасалдыг үйлчлэх дэд прог. }

#int_RDA RDA_isr() { //Цуваа портоор өгөгдөл ирэх

//тасалдыг үйлчлэх дэд прог.

}

#int_EXT EXT_isr() { //Гадаад (INTx) тасалдыг үйлчлэх дэд прог.

}

Page 64: PIC Pictures

Тасалдал - INTERRUPT програмчилалын жишээ

•10MHz

•ADC

•TIMER1

Initialize

“temperature”

TIMER1 : start AD Conversion

104.8ms

ADC end: „temperature=‟

RECEIVE command: send „temperature‟ to PC

Main

Програм

Print:

„temperature‟

Page 65: PIC Pictures

Тасалдал - INTERRUPT програмчилалын жишээ

Page 66: PIC Pictures
Page 67: PIC Pictures

CCP module

Page 68: PIC Pictures

CCP module

Page 69: PIC Pictures

CCP module

Page 70: PIC Pictures

CCP module

Page 71: PIC Pictures

CCP module

Page 72: PIC Pictures

CCP module

Page 73: PIC Pictures

CCP module

Page 74: PIC Pictures

ССР модулийн ажлын горим

тогтоох функцүүд

CCP module

Page 75: PIC Pictures

CCP module

18F452.h файлд зарласан ССР модульд хамаарах тогтмол

директивүүдээс:

#define CCP_OFF 0

#define CCP_CAPTURE_FE 4

#define CCP_CAPTURE_RE 5

#define CCP_CAPTURE_DIV_4 6

#define CCP_CAPTURE_DIV_16 7

#define CCP_COMPARE_SET_ON_MATCH 8

#define CCP_COMPARE_CLR_ON_MATCH 9

#define CCP_COMPARE_INT 0xA

#define CCP_COMPARE_INT_AND_TOGGLE 0x2

#define CCP_COMPARE_RESET_TIMER 0xB

long CCP_1;

#byte CCP_1 = 0xFBE

#byte CCP_1_LOW= 0xFBE

#byte CCP_1_HIGH= 0xFBF

long CCP_2;

#byte CCP_2 = 0xFBB

#byte CCP_2_LOW= 0xFBB

#byte CCP_2_HIGH= 0xFBC

Page 76: PIC Pictures

CCP module

#define CCP_CAPTURE_DIV_16 0х7

setup_ccp1(ccp_capture_div_16);

setup_ccp2(CCP_COMPARE_CLR_ON_MATCH );

#define CCP_COMPARE_CLR_ON_MATCH 0х9

Page 77: PIC Pictures

CCP module ЖИШЭЭ 1: Capture горим. Гадаад хөл (C порт) -нд H_L шилжилт үүсэхэд

тоолуурын утгыг ccp_1-д хуулж авна

void main()

{

setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);

setup_ccp1(CCP_CAPTURE_FE);

set_tris_c(0x4); // 00000100b

while(1)

{ …

output_b(ccp_1);

output_d(ccp_1>>=8);

}

}

Page 78: PIC Pictures

CCP module ЖИШЭЭ 2: Compare горим. ССР_1 –д олгосон утга Таймер1-ийн утгатай

тэнцэх агшинд С портын харгалзах бит- гаралт

“Н” төлөвт шилжинэ.

void main()

{

setup_timer_1(T1_INTERNAL| T1_DIV_BY_8);

setup_ccp1(CCP_COMPARE_SET_ON_MATCH);

set_tris_c(0xFB); // 11111011b

ccp_1=0xFF;

while(1)

{

// do nothing

}

}

20MHz үед 20MHz/4=5MHz;

5MHz/8=625KHz;

1.6us*255=408us;

Page 79: PIC Pictures

CCP module

Pulse Width Modulation горим

Page 80: PIC Pictures

CCP module

PWM горим

Page 81: PIC Pictures

CCP module

Page 82: PIC Pictures

ССР модулийн PWM горимын үед утга олгох функцүүд

CCP module

Page 83: PIC Pictures

#define CCP_PWM 0xC

#define CCP_PWM_PLUS_1 0x1c

#define CCP_PWM_PLUS_2 0x2c

#define CCP_PWM_PLUS_3 0x3c

#define CCP_USE_TIMER3 0x100

CCP module

setup_ccp2(CCP_PWM_PLUS_1);

Page 84: PIC Pictures

CCP module

ЖИШЭЭ 3: PWM горим. CCP2-оор 100 мkсек үетэй, 10-90 мkсек завсарт

тохируулж болох өргөнтэй “Н” импульсын цуваа

үүсгэх. (Fosc=20MHz)

100us=(PR2+1)*4*Tosc*TMR2presc=|TMR2presc=4|=

=(PR2+1)*16*50*10(-9)

PR2=100*10(-6)/(16*50*10(-9))-1=100/800*10(3)-1=

= 124=0x7C;

Tosc=1/Fosc=1/20000000=0.00000005=50ns=50*10(-9)s

PWMduty=(CCPR1L:CCP1CON<5,4>)*4*Tosc*TMR2presc

PWMmin=10us=(CCPR1L:CCP1CON<5,4>)*4*50*10(-9)*4;

PWMmax=90us=(CCPR1L:CCP1CON<5,4>)*4*50*10(-9)*4;

(CCPR1L:CCP1CON<5,4>)min=10*10(-6)/ (16*50*10(-9))=

=0.0125*10(3)=12.5=0xC;

(CCPR1L:CCP1CON<5,4>)max=90*10(-6)/ (16*50*10(-9))=

=0.0125*10(3)=112.5=0x70;

Page 85: PIC Pictures

void main()

{

int16 duty_cycle;

setup_adc_ports(RA0_ANALOG); // 8 bit

setup_adc(ADC_CLOCK_INTERNAL);

setup_timer_2(T2_DIV_BY_4, 124, 1);

setup_ccp2(ccp_pwm);

set_tris_c(0x0);

while(1)

{

duty_cycle=read_adc(adc_start_and_read);

set_pwm2_duty(duty_cycle);

}

}

CCP module

5V 255=0xFF

0V 0=0x0

2.196V 112=0x70

0.235V 12=0xC

Page 86: PIC Pictures
Page 87: PIC Pictures

PSP module

Paralel Slave Port

Page 88: PIC Pictures

PSP module

Paralel Slave Port

Page 89: PIC Pictures

PSP module

Paralel Slave Port

Page 90: PIC Pictures

PSP module

Paralel Slave Port

Page 91: PIC Pictures

PSP module

0xFC1

0xF96

Paralel Slave Port

Page 92: PIC Pictures

PSP module

Paralel Slave Port

0xF96

Page 93: PIC Pictures

PSP module

Page 94: PIC Pictures

PSP module PSP програмчилал

Page 95: PIC Pictures

PSP module

#define PSP_ENABLED 0x10

#define PSP_DISABLED 0

#byte PSP_DATA = 0xF83 // port D

PSP програмчилал

Page 96: PIC Pictures

PSP module

OBF битийг шалгана IBF битийг шалгана

IBOV битийг шалгана

PSP програмчилал

Page 97: PIC Pictures

PSP програмчилал

PSP module

// port D register

// OVF bit

// IBF bit

// OBF bit

// port D register

#byte PSP_DATA 0xF83

Page 98: PIC Pictures

PSP module

Int8 data;

Int8 error;

#int_PSP //өгөгдөл орж ирлээ

PSP_isr()

{

if(psp_input_full ()) data=psp_read();

if (!psp_output_full()) psp_write(data);

error=0xaa;

}

PSP програмчилал

Page 99: PIC Pictures

display(int var )

{

…..

}

Main()

{

setup_psp(psp_enabled);

. . . . .

enable_interrupts(INT_PSP);

enable_interrupts(GLOBAL);

. . . . . .

if (error) display(error);

display(data);

}

Page 100: PIC Pictures
Page 101: PIC Pictures

MSSP модуль

Master Slave Synchronous Port

Page 102: PIC Pictures

MSSP модуль

SPI mode

Page 103: PIC Pictures

MSSP модуль

SPI mode

Page 104: PIC Pictures

MSSP модуль

master

slave

SPI mode

Page 105: PIC Pictures

MSSP модуль

SPI mode

Page 106: PIC Pictures

0xFC6

0xFC6

0xFC5

Page 107: PIC Pictures

SPI_MASTER, SPI_SLAVE, SPI_SS_DISABLED

SPI_L_TO_H, SPI_H_TO_L

SPI_CLK_DIV_4, SPI_CLK_DIV_16, SPI_CLK_DIV_64, SPI_CLK_T2

MSSP модуль

Page 108: PIC Pictures

Дотоод бит-тоолуур тэглэнэ.

MSSP модуль

Page 109: PIC Pictures

MSSP programming

Page 110: PIC Pictures

MSSP programming

Page 111: PIC Pictures

MSSP programming

Page 112: PIC Pictures

MSSP programming

Page 113: PIC Pictures

MSSP programming Жишээ :

int spi_dat;

#INT_SSP // SPI or I2C activity

ssp_isr()

{

spi_dat=spi_read();

}

Main()

{

set_spi(spi_master | spi_l_to_h | spi_clk_div_4);

. . . . .

enable_interrupts(INT_SSP );

enable_interrupts(GLOBAL);

. . . . . .

}

Page 114: PIC Pictures

MSSP programming

Page 115: PIC Pictures

int code[4];

int fig[]={zero,one,… , nine, …, fifteen};

#define zero 0x3f

#define one 0x6

….

#define nine 0x6f

bin2hex(long x)

{ int n=0;

ldiv_t lidiv;

while(x>15)

{ lidiv=ldiv(x, 16);

code[n]=lidiv.rem;

n++;

x=lidiv.quot;

}

code[n]=x;

}

MSSP programming

#include <math.h>

#include <stdlib.h>

Page 116: PIC Pictures

display()

{ int i;

for(i=3; i>=0; i--)

spi_write(fig[code[i]]);

}

MSSP programming

Page 117: PIC Pictures

MSSP programming

Main()

{int 16 cntr;

……….

clear_code();

cntr=get_timer1();

bin2hex(cntr);

display();

clear_code();

display(bin2hex(get_timer3()));

……….

}

clear_code()

{ int k;

for(k=0; k<4; k++)

code[k]=0; }

Page 118: PIC Pictures

I2C (IIC) горим

Page 119: PIC Pictures

I2C горим

~250

~250

MSSP module

Page 120: PIC Pictures

аж

лы

н р

еги

стр

үү

д

уд

ир

дл

агы

н

ре

гис

тр

MSSP module

Page 121: PIC Pictures

MSSP module

Тасалдал SSPIF

Page 122: PIC Pictures

0xFC7 MSSP module

Page 123: PIC Pictures

MSSP module 0xFC6

Page 124: PIC Pictures

MSSP module

0xFC5

Page 125: PIC Pictures

MSSP module SLAVE MODE

SSPCON1<3:0>

(0xFC6)

Page 126: PIC Pictures

SLAVE MODE

7 bit address

10 bit address

MSSP module

Page 127: PIC Pictures

MSSP module SLAVE MODE

Page 128: PIC Pictures

SLAVE MODE

master slave

MSSP module

Page 129: PIC Pictures

SLAVE MODE

master slave

MSSP module

Page 130: PIC Pictures

MSSP module SLAVE MODE

Page 131: PIC Pictures

SLAVE MODE

master slave

MSSP module

Page 132: PIC Pictures

SLAVE MODE

master slave

MSSP module

Page 133: PIC Pictures

MSSP module

MASTER MODE

Page 134: PIC Pictures

MSSP module

Page 135: PIC Pictures

MSSP module

Page 136: PIC Pictures

MSSP module

Page 137: PIC Pictures

MSSP module

Page 138: PIC Pictures

MSSP module

Page 139: PIC Pictures

MSSP module

Page 140: PIC Pictures

MSSP module

Page 141: PIC Pictures

MSSP module

Page 142: PIC Pictures
Page 143: PIC Pictures

I2C programming

set_tris_c(000xx000); // C4-SDA (data), C3-SCL (clock)

Page 144: PIC Pictures

I2C programming

Page 145: PIC Pictures

I2C programming

Page 146: PIC Pictures

I2C programming

Page 147: PIC Pictures

I2C programming

Page 148: PIC Pictures

I2C programming

Page 149: PIC Pictures

I2C programming MULTIMASTER MODE

Page 150: PIC Pictures

MULTIMASTER MODE

„Collision‟ үүсэх нөхцлүүд:

•Start condition

•Repeated start condition

•Transmission & acknowledge

•Stop condition

Page 151: PIC Pictures

I2C programming MULTIMASTER MODE

Page 152: PIC Pictures

MULTIMASTER MODE

Page 153: PIC Pictures

I2C programming MULTIMASTER MODE

Page 154: PIC Pictures

I2C programming MULTIMASTER MODE

Page 155: PIC Pictures
Page 156: PIC Pictures
Page 157: PIC Pictures
Page 158: PIC Pictures

(PIC18F452)

LVD module

Page 159: PIC Pictures

LVD module

Page 160: PIC Pictures

7

LVD module

Page 161: PIC Pictures

LVD module

Энэ модулийг хэрэглэх ажиллагааны дараалал:

Page 162: PIC Pictures

LVD module

Page 163: PIC Pictures

LVD programming

Page 164: PIC Pictures

#INT_LOWVOLT //Low voltage detected

LVD programming

Page 165: PIC Pictures

LVD модулийн жишээ

Page 166: PIC Pictures
Page 167: PIC Pictures

Watch Dog Timer - TIMER

Page 168: PIC Pictures

Watch Dog Timer - TIMER

#fuses WDT // PCB/PCM example

// See setup_wdt for a PIC18 example

main() {

setup_wdt(WDT_2304MS);

while (TRUE) {

restart_wdt();

perform_activity();

}

}

Page 169: PIC Pictures

Watch Dog Timer - TIMER

Page 170: PIC Pictures
Page 171: PIC Pictures

DATA EEPROM

Capacity = 256 байт

Address= 0....FFh

Page 172: PIC Pictures

DATA EEPROM

Page 173: PIC Pictures

DATA EEPROM

Page 174: PIC Pictures
Page 175: PIC Pictures

USART module

Page 176: PIC Pictures

USART module

Page 177: PIC Pictures

USART module

Page 178: PIC Pictures

USART module

Page 179: PIC Pictures

USART module

Page 180: PIC Pictures

USART module

Page 181: PIC Pictures

USART module

Page 182: PIC Pictures

USART programming

Page 183: PIC Pictures

USART programming

Page 184: PIC Pictures

USART programming

Page 185: PIC Pictures

USART programming

Page 186: PIC Pictures

USART programming

Page 187: PIC Pictures

USART programming

Page 188: PIC Pictures

USART programming

Жишээ:

Page 189: PIC Pictures
Page 190: PIC Pictures
Page 191: PIC Pictures
Page 192: PIC Pictures
Page 193: PIC Pictures
Page 194: PIC Pictures
Page 195: PIC Pictures
Page 196: PIC Pictures
Page 197: PIC Pictures
Page 198: PIC Pictures
Page 199: PIC Pictures
Page 200: PIC Pictures
Page 201: PIC Pictures
Page 202: PIC Pictures
Page 203: PIC Pictures
Page 204: PIC Pictures
Page 205: PIC Pictures
Page 206: PIC Pictures

I2C programming MULTIMASTER MODE

Page 207: PIC Pictures

MSSP module

Page 208: PIC Pictures

MSSP module