You are on page 1of 4

Vẽ mạch:

U1
2 15
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
3 16
RA1/AN1/C2IN- RC1/T1OSI/CCP2B
4 17
RA2/AN2/C2IN+/VREF-/CVREF RC2/CCP1/P1A
5 18
6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
23 VIRTUAL TERMINAL
RA4/T0CKI/C1OUT RC4/SDI/SDA
7 24
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO RXD
14 25
RA6/OSC2/CLKO RC6/TX/CK
13 26
RA7/OSC1/CLKI RC7/RX/DT TXD
33 19
RB0/AN12/FLT0/INT0 RD0/PSP0 RTS
34 20
RB1/AN10/INT1 RD1/PSP1
35 21
RB2/AN8/INT2 RD2/PSP2 CTS
36 22
RB3/AN9/CCP2A RD3/PSP3
37 27
RB4/KBI0/AN11 RD4/PSP4
38 28
RB5/KBI1/PGM RD5/PSP5/P1B
39 29
40
RB6/KBI2/PGC RD6/PSP6/P1C
30 LED
RB7/KBI3/PGD RD7/PSP7/P1D R
8 560
RE0/RD/AN5
9
RE1/WR/AN6
10
RE2/CS/AN7
1
RE3/MCLR/VPP
PIC18F4520

Lưu ý: đổi tần số thạch anh của VĐK và tốc độ baud của Virtual Terminal theo đề bài

11.0592
Tính tham số spbgr (công thức ở hàm OpenUSART)

𝐹𝑜𝑠𝑐 11,0592 ∗ 10
𝑠𝑝𝑏𝑟𝑔 = −1= − 1 = 71
𝑇ố𝑐 đọ 𝑏𝑎𝑢𝑑 ∗ 16 9600 ∗ 16

Chương trình:

#include<p18f4520.h>

#include<delays.h>

#include<usart.h>

#pragma config OSC = HS

#pragma config LVP = OFF

#pragma config MCLRE = ON

#pragma config WDT = OFF

char x;

void main (void)

// Buoc 2. Vao Ra

TRISC=0b10000000;

TRISD=0b00000000;
ADCON1=0x0f;

// Buoc 3. Khoi tao USART

OpenUSART( USART_TX_INT_OFF&

USART_RX_INT_OFF&

USART_ASYNCH_MODE&

USART_EIGHT_BIT&

USART_CONT_RX&

USART_BRGH_HIGH,

71);

while(BusyUSART()); // ch? cho byte tru?c du?c truy?n xong

WriteUSART('S'); //… là byte c?n truy?n

while(BusyUSART()); // ch? cho byte tru?c du?c truy?n xong

WriteUSART('T');

while(BusyUSART()); // ch? cho byte tru?c du?c truy?n xong

WriteUSART('A');

while(BusyUSART()); // ch? cho byte tru?c du?c truy?n xong

WriteUSART('R');

while(BusyUSART()); // ch? cho byte tru?c du?c truy?n xong

WriteUSART('T');

//hoac viet

//putrsUSART("START");

while(1)

x=ReadUSART();

if(x=='g')

PORTDbits.RD7=1; //LED sáng

else PORTDbits.RD7=0;

Kết quả:
Muốn nhập 1 ký tự từ bàn phím và truyền về PIC18F4520 từ Virtual Terminal: Click chuột phải, chọn
Echo Typed Charecters.

Câu 11 tương tự câu 12, để hiển thị mã của ký tự nhận được từ Virtual Terminal trên các LED nối với
RD0-RD7 cần viết:

x=ReadUSART();

PORTD=x;

Khi đó, nếu nhấn “a” từ bàn phím, các LED nối với chân RD0,5,6 sẽ sáng vì mã của a là
0x61=0b01100001

You might also like