You are on page 1of 92

Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

1.1. Lập trình điều khiển vào ra (20 câu)

Cho sơ đồ
RB7
nguyên lý như PIC18F4520 LED4
2 15
hình bên. 3
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
16 LED5 LED4
Viết chương 4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
17 LED6
5 18
trình điều khiển 6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
23
RB6
RA4/T0CKI/C1OUT RC4/SDI/SDA
theo yêu cầu: 7
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
OSC2 14 25 LED3
Nhấn phím OSC1 13
RA6/OSC2/CLKO RC6/TX/CK
26
RA7/OSC1/CLKI RC7/RX/DT
KEY1 các KEY1
LED3
33 19
LED1÷LED4 RB0/AN12/FLT0/INT0 RD0/PSP0
KEY2 34 20 RB5
RB1/AN10/INT1 RD1/PSP1
sáng; nhấn KEY3
KEY4
35
36
RB2/AN8/INT2 RD2/PSP2
21
22
RB3/AN9/CCP2A RD3/PSP3
KEY2 LED5 và LED1 37
RB4/KBI0/AN11 RD4/PSP4
27 LED2
LED2 38 28
LED6 sáng; LED3 39
RB5/KBI1/PGM RD5/PSP5/P1B
29 LED2
RB6/KBI2/PGC RD6/PSP6/P1C
Nhả các phím, LED4 40
RB7/KBI3/PGD RD7/PSP7/P1D
30
Reset RB4
LED tắt. 8
RE0/RD/AN5
- Biên dịch, nạp RE1/WR/AN6
9
LED1
10
chương trình và RE2/CS/AN7
RE3/MCLR/VPP
1
LED1
chạy chương PIC18F4520 RC1
trình trên “thiết KEY1
C1
bị thực hành vi OSC1
LED5

điều khiển” KEY2 8 MHZ LED5


22p RC2
KEY3
C2 LED6

KEY4 OSC2 LED6


22p

#include<p18f4520.h> {
#include<delays.h> ADCON1=0x0f;
#pragma config OSC=HS TRISB=0x0f;
#pragma config WDT=OFF TRISC=0x00;
#pragma config MCLRE=ON while(1)
#define sw1 PORTBbits.RB0 {
#define sw2 PORTBbits.RB1 if(sw1==0)
void main(void) PORTB=0xff;

==================================================================================
1
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Delay10KTCYx(20); Delay10KTCYx(20);
PORTB=0x00; PORTC=0x00;
if(sw2==0) }
PORTC=0xff; }

Câu 1.2: (6 RB7


PIC18F4520
điểm) 2 15
LED4

Cho sơ đồ 3
RA0/AN0/C1IN-
RA1/AN1/C2IN-
RC0/T1OSO/T13CKI
RC1/T1OSI/CCP2B
16 LED5 LED4
4 17 LED6
nguyên lý 5
RA2/AN2/C2IN+/VREF-/CVREF
RA3/AN3/C1IN+/VREF+
RC2/CCP1/P1A
RC3/SCK/SCL
18 RB6
như hình bên. 6
7
RA4/T0CKI/C1OUT RC4/SDI/SDA
23
24
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
Viết chương OSC2 14
RA6/OSC2/CLKO RC6/TX/CK
25 LED3
OSC1 13 26
trình điều RA7/OSC1/CLKI RC7/RX/DT
LED3
khiển theo KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 RB5
RB1/AN10/INT1 RD1/PSP1
yêu cầu: KEY3
KEY4
35
36
RB2/AN8/INT2 RD2/PSP2
21
22
Nhấn phím LED1 37
RB3/AN9/CCP2A
RB4/KBI0/AN11
RD3/PSP3
RD4/PSP4
27 LED2
LED2 38 28
KEY1, LED3 39
RB5/KBI1/PGM RD5/PSP5/P1B
29 LED2
RB6/KBI2/PGC RD6/PSP6/P1C
KEY2, KEY3 LED4 40
RB7/KBI3/PGD RD7/PSP7/P1D
30
Reset RB4
hoặc KEY4 RE0/RD/AN5
8

sẽ sáng tương RE1/WR/AN6


9
10 LED1
RE2/CS/AN7
ứng LED1, RE3/MCLR/VPP
1
LED1
LED2, LED3 PIC18F4520 RC1
hoặc LED4; KEY1
C1
Nhả phím, OSC1
LED5

LED tắt. KEY2 8 MHZ LED5

- Biên dịch,
22p RC2
nạp chương KEY3
C2 LED6
trình và chạy KEY4 OSC2 LED6
chương trình 22p
trên “thiết bị
thực hành vi
điều khiển”

==================================================
#include<p18f4520.h> #define sw1 PORTBbits.RB0
#include<delays.h> #define sw2 PORTBbits.RB1
#pragma config OSC=HS #define sw3 PORTBbits.RB2
#pragma config WDT=OFF #define sw4 PORTBbits.RB3
#pragma config MCLRE=ON #define led1 PORTBbits.RB4
==================================================================================
2
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

#define led2 PORTBbits.RB5 Delay10KTCYx(10);


#define led3 PORTBbits.RB6 led2=0;
#define led4 PORTBbits.RB7 }
void main(void) if(sw3==0)
{ { led3=1;
ADCON1=0x0f; Delay10KTCYx(10);
TRISB=0x0f; led3=0;
while(1) }
{ if(sw4==0)
if(sw1==0) { led4=1;
{ led1=1; Delay10KTCYx(10);
Delay10KTCYx(10); led4=0;
led1=0; }
} }
if(sw2==0) }
{ led2=1;

==================================================================================
3
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Câu 1.3: (6 điểm)


Cho sơ đồ
PIC18F4520
nguyên lý như 2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15 RB7
3 16
hình bên. 4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
17
Viết chương trình 5
6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
18
23
LED4
RA4/T0CKI/C1OUT RC4/SDI/SDA
điều khiển theo OSC2
7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
LED4
RA6/OSC2/CLKO RC6/TX/CK
yêu cầu: Nhấn OSC1 13
RA7/OSC1/CLKI RC7/RX/DT
26 RB6
KEY4, KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 LED3
RB1/AN10/INT1 RD1/PSP1
LED1÷LED4 KEY3
KEY4
35
36
RB2/AN8/INT2 RD2/PSP2
21
22 LED3
RB3/AN9/CCP2A RD3/PSP3
sáng; nhấn LED1
LED2
37
38
RB4/KBI0/AN11 RD4/PSP4
27
28
RB5/KBI1/PGM RD5/PSP5/P1B RB5
KEY2, KEY3 LED3
LED4
39
40
RB6/KBI2/PGC RD6/PSP6/P1C
29
30
hoặc KEY1, tất
RB7/KBI3/PGD RD7/PSP7/P1D
Reset LED2
8
cả các LED tắt. RE0/RD/AN5
RE1/WR/AN6
9
10
LED2

- Biên dịch, nạp RE2/CS/AN7


RE3/MCLR/VPP
1 RB4
chương trình và PIC18F4520
LED1
chạy chương KEY1
C1 LED1
trình trên “thiết KEY2
OSC1
8 MHZ
bị thực hành vi 22p

điều khiển” KEY3


C2
KEY4 OSC2
22p

================================================
#include<p18f4520.h> ADCON1=0x0f;
#include<delays.h> TRISB=0x0f;
#pragma config OSC=HS while(1)
#pragma config WDT=OFF {
#pragma config MCLRE=ON if(sw4==0)
#define sw1 PORTBbits.RB0 PORTB=0xf0;
#define sw2 PORTBbits.RB1 if(sw1==0|sw2==0|sw3==0)
#define sw3 PORTBbits.RB2 PORTB=0x00;
#define sw4 PORTBbits.RB3 }
void main(void) }
{

==================================================================================
4
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Câu 1.4: (6 điểm)


Cho sơ đồ
PIC18F4520
nguyên lý như 2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15 RB7
3 16
hình bên. 4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
17
Viết chương trình 5
6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
18
23
LED4
RA4/T0CKI/C1OUT RC4/SDI/SDA
điều khiển theo OSC2
7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
LED4
RA6/OSC2/CLKO RC6/TX/CK
yêu cầu: Nhấn OSC1 13
RA7/OSC1/CLKI RC7/RX/DT
26 RB6
KEY3, LED3 và KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 LED3
RB1/AN10/INT1 RD1/PSP1
LED4 sáng; KEY3
KEY4
35
36
RB2/AN8/INT2 RD2/PSP2
21
22 LED3
RB3/AN9/CCP2A RD3/PSP3
Nhấn KEY4, LED1
LED2
37
38
RB4/KBI0/AN11 RD4/PSP4
27
28
RB5/KBI1/PGM RD5/PSP5/P1B RB5
LED1 và LED2 LED3
LED4
39
40
RB6/KBI2/PGC RD6/PSP6/P1C
29
30
sáng; Nhấn
RB7/KBI3/PGD RD7/PSP7/P1D
Reset LED2
8
RE0/RD/AN5
KEY2 các RE1/WR/AN6
9
10
LED2

LED1÷LED4 tắt. RE2/CS/AN7


RE3/MCLR/VPP
1 RB4
- Biên dịch, nạp PIC18F4520
LED1
chương trình và KEY1
C1 LED1
chạy chương KEY2
OSC1
8 MHZ
trình trên “thiết 22p

bị thực hành vi KEY3


C2
điều khiển”
KEY4 OSC2
22p

==============================================
#include<p18f4520.h> #define led4 PORTBbits.RB7
#include<delays.h> void main(void)
#pragma config OSC=HS {
#pragma config WDT=OFF ADCON1=0x0f;
#pragma config MCLRE=ON TRISB=0x0f;
#define sw2 PORTBbits.RB1 while(1)
#define sw3 PORTBbits.RB2 {
#define sw4 PORTBbits.RB3 if(sw3==0)
#define led1 PORTBbits.RB4 {
#define led2 PORTBbits.RB5 led3=1;
#define led3 PORTBbits.RB6 led4=1;

==================================================================================
5
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

} }
if(sw4==0) if (sw2==0)
{ PORTB=0x00;
led1=1; }
led2=1; }

Câu 1.5.1: (6 điểm)


Cho sơ đồ
PIC18F4520
nguyên lý như 2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15 RB7
3 16
hình bên. 4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
17
Viết chương 5
6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
18
23
LED4
RA4/T0CKI/C1OUT RC4/SDI/SDA
trình điều khiển OSC2
7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
LED4
RA6/OSC2/CLKO RC6/TX/CK
theo yêu cầu: OSC1 13
RA7/OSC1/CLKI RC7/RX/DT
26 RB6
Nhấn KEY3, KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 LED3
RB1/AN10/INT1 RD1/PSP1
LED3 sáng; KEY3
KEY4
35
36
RB2/AN8/INT2 RD2/PSP2
21
22 LED3
RB3/AN9/CCP2A RD3/PSP3
Nhấn KEY2, LED1
LED2
37
38
RB4/KBI0/AN11 RD4/PSP4
27
28 RB5
LED3 tắt.
RB5/KBI1/PGM RD5/PSP5/P1B
LED3 39 29
RB6/KBI2/PGC RD6/PSP6/P1C
LED4 40 30
- Biên dịch, nạp
RB7/KBI3/PGD RD7/PSP7/P1D
Reset LED2
8
chương trình và RE0/RD/AN5
RE1/WR/AN6
9
10
LED2

chạy chương RE2/CS/AN7


RE3/MCLR/VPP
1 RB4
trình trên “thiết PIC18F4520
LED1
bị thực hành vi KEY1
C1 LED1
điều khiển” KEY2
OSC1
8 MHZ
22p

KEY3
C2
KEY4 OSC2
22p

==================================================================================
6
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

===========================================
#include<p18f4520.h> { ADCON1=0x0f;
#include<delays.h> TRISB=0x0f;
#pragma config OSC=HS while(1)
#pragma config WDT=OFF {
#pragma config if(sw3==0)
MCLRE=ON
led3=1;
#define sw2 PORTBbits.RB1
if (sw2==0)
#define sw3 PORTBbits.RB2
led3=0;
#define led3 PORTBbits.RB6
}
void main(void)
}
///////////////////////////////////////////////////////////////////////////////////////////////
Bài 1.5.2 tương tự như bài 1.5.1 nhé

==================================================================================
7
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Câu 1.5.2: (6 điểm)


Cho sơ đồ
PIC18F4520
nguyên lý như 2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15 RB7
3 16
hình bên. 4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
17
- Viết chương 5
6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
18
23
LED4
RA4/T0CKI/C1OUT RC4/SDI/SDA
trình điều khiển OSC2
7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
LED4
RA6/OSC2/CLKO RC6/TX/CK
theo yêu cầu: OSC1 13
RA7/OSC1/CLKI RC7/RX/DT
26 RB6
Nhấn KEY1, KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 LED3
RB1/AN10/INT1 RD1/PSP1
LED1 sáng; KEY3
KEY4
35
36
RB2/AN8/INT2 RD2/PSP2
21
22 LED3
RB3/AN9/CCP2A RD3/PSP3
Nhấn KEY2, LED1
LED2
37
38
RB4/KBI0/AN11 RD4/PSP4
27
28 RB5
LED1 tắt.
RB5/KBI1/PGM RD5/PSP5/P1B
LED3 39 29
RB6/KBI2/PGC RD6/PSP6/P1C
LED4 40 30
- Biên dịch, nạp
RB7/KBI3/PGD RD7/PSP7/P1D
Reset LED2
8
chương trình và RE0/RD/AN5
RE1/WR/AN6
9
10
LED2

chạy chương RE2/CS/AN7


RE3/MCLR/VPP
1 RB4
trình trên “thiết PIC18F4520
LED1
bị thực hành vi KEY1
C1 LED1
điều khiển” KEY2
OSC1
8 MHZ
22p

KEY3
C2
KEY4 OSC2
22p

Làm tương tự bài 1.5.1

==================================================================================
8
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Câu 1.6: (6 điểm)


PIC18F4520
Cho sơ đồ 2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15 RB7
nguyên lý như 3
4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
16
17
5 18 LED4
hình bên. 6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
23
RA4/T0CKI/C1OUT RC4/SDI/SDA
- Viết chương OSC2
7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
LED4
RA6/OSC2/CLKO RC6/TX/CK
trình điều khiển OSC1 13
RA7/OSC1/CLKI RC7/RX/DT
26 RB6
4 LED sáng KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 LED3
RB1/AN10/INT1 RD1/PSP1
tuần tự. Khi KEY3
KEY4
35
36
RB2/AN8/INT2 RD2/PSP2
21
22 LED3
RB3/AN9/CCP2A RD3/PSP3
nhấn KEY3 các LED1
LED2
37
38
RB4/KBI0/AN11 RD4/PSP4
27
28 RB5
LED tắt.
RB5/KBI1/PGM RD5/PSP5/P1B
LED3 39 29
RB6/KBI2/PGC RD6/PSP6/P1C
LED4 40 30
- Biên dịch, nạp
RB7/KBI3/PGD RD7/PSP7/P1D
Reset LED2
8
chương trình và RE0/RD/AN5
RE1/WR/AN6
9
10
LED2

chạy chương RE2/CS/AN7


RE3/MCLR/VPP
1 RB4
trình trên “thiết PIC18F4520
LED1
bị thực hành vi KEY1
C1 LED1
điều khiển” KEY2
OSC1
8 MHZ
22p

KEY3
C2
KEY4 OSC2
22p

==========================================
#include<p18f4520.h> If (key4==1)
#include<delays.h> {
#pragma config OSC=HS,WDT=OFF, led1=1;Delay10KTCYx(10);led1=0;
MCLRE=ON Delay10KTCYx(10);
led2=1;Delay10KTCYx(10);led2=0;
#define led1 PORTBbits.RB4
Delay10KTCYx(10);
#define led2 PORTBbits.RB5
led3=1;Delay10KTCYx(10);led3=0;
#define led3 PORTBbits.RB6
Delay10KTCYx(10);
#define led4 PORTBbits.RB7
led4=1;Delay10KTCYx(10);led4=0;
#define key4 PORTBbits.RB3
Delay10KTCYx(10);}
void main(void)
{
else {led1=led2=led3=led4=0;} }}
ADCON1=0x0f;
==================================================================================
9
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Câu 1.7: (6 điểm)


RB7
Cho sơ đồ PIC18F4520 LED4
2 15
nguyên lý 3
RA0/AN0/C1IN-
RA1/AN1/C2IN-
RC0/T1OSO/T13CKI
RC1/T1OSI/CCP2B
16 LED5 LED4
như hình bên. 4
5
RA2/AN2/C2IN+/VREF-/CVREF RC2/CCP1/P1A
17
18
LED6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL RB6
- Viết chương 6
RA4/T0CKI/C1OUT RC4/SDI/SDA
23
7 24
trình điều OSC2 14
RA5/AN4/SS/HLVDIN/C2OUT
RA6/OSC2/CLKO
RC5/SDO
RC6/TX/CK
25 LED3

khiển 6 LED OSC1 13


RA7/OSC1/CLKI RC7/RX/DT
26
LED3
sáng tuần tự. KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 RB5
khi nhấn KEY3 35
RB1/AN10/INT1
RB2/AN8/INT2
RD1/PSP1
RD2/PSP2
21
KEY4 36 22
KEY4 các LED1 37
RB3/AN9/CCP2A RD3/PSP3
27 LED2
RB4/KBI0/AN11 RD4/PSP4
LED tắt. LED2
LED3
38
39
RB5/KBI1/PGM RD5/PSP5/P1B
28
29 LED2
- Biên dịch, LED4 40
RB6/KBI2/PGC
RB7/KBI3/PGD
RD6/PSP6/P1C
RD7/PSP7/P1D
30
Reset RB4
nạp chương RE0/RD/AN5
8
trình và chạy RE1/WR/AN6
9
10 LED1
chương trình RE2/CS/AN7
RE3/MCLR/VPP
1
LED1
trên “thiết bị PIC18F4520 RC1
thực hành vi KEY1
điều khiển” C1 LED5
OSC1
KEY2 8 MHZ LED5
22p RC2
KEY3
C2 LED6

KEY4 OSC2 LED6


22p

===============================================
#include<p18f4520.h> #define led1 PORTBbits.RB4
#include<delays.h> #define led2 PORTBbits.RB5
#pragma config OSC=HS #define led3 PORTBbits.RB6
#pragma config WDT=OFF #define led4 PORTBbits.RB7
#pragma config MCLRE=ON void main(void)
#define sw1 PORTBbits.RB0 { int i;
#define sw2 PORTBbits.RB1 ADCON1=0x0f;
#define sw3 PORTBbits.RB2 TRISB=0x0f;
#define sw4 PORTBbits.RB3 TRISC=0x00;

==================================================================================
10
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

PORTB=0x40;
PORTC=0;
while(1) Delay10KTCYx(50);
{ }
if(sw4==1) else
{PORTB=0x10; {
PORTC=0; PORTB=0;
Delay10KTCYx(50); PORTC=0;
} }
else if(sw4==1)
{ {
PORTB=0; PORTB=0x80;
PORTC=0; PORTC=0;
} Delay10KTCYx(50);
if(sw4==1) }
{ else
PORTB=0x20; {
PORTC=0; PORTB=0;
Delay10KTCYx(50); PORTC=0;
} }
else
{ if(sw4==1)
PORTB=0; {
PORTC=0; PORTC=0x02;
} PORTB=0;
if(sw4==1) Delay10KTCYx(50);
{ }

==================================================================================
11
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

else Delay10KTCYx(50);
{ }
PORTB=0; else
PORTC=0; {
}; PORTB=0;
PORTC=0;
if(sw4==1) }
{ }
PORTC=0x04; }
PORTB=0;

Câu 1.8: (6 điểm)

==================================================================================
12
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Cho sơ đồ
RB7
nguyên lý như PIC18F4520 LED4
2 15
hình bên. 3
RA0/AN0/C1IN-
RA1/AN1/C2IN-
RC0/T1OSO/T13CKI
RC1/T1OSI/CCP2B
16 LED5 LED4
Viết chương 4
5
RA2/AN2/C2IN+/VREF-/CVREF RC2/CCP1/P1A
17
18
LED6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL RB6
trình điều 6
RA4/T0CKI/C1OUT RC4/SDI/SDA
23
7 24
khiển theo quy OSC2 14
RA5/AN4/SS/HLVDIN/C2OUT
RA6/OSC2/CLKO
RC5/SDO
RC6/TX/CK
25 LED3

luật: Nhấn OSC1 13


RA7/OSC1/CLKI RC7/RX/DT
26
LED3
KEY1 một KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 RB5
lần, LED1 KEY3 35
RB1/AN10/INT1
RB2/AN8/INT2
RD1/PSP1
RD2/PSP2
21
KEY4 36 22
sáng, các LED LED1 37
RB3/AN9/CCP2A RD3/PSP3
27 LED2
RB4/KBI0/AN11 RD4/PSP4
khác tắt; Nhấn LED2
LED3
38
39
RB5/KBI1/PGM RD5/PSP5/P1B
28
29 LED2
KEY1 hai lần, LED4 40
RB6/KBI2/PGC
RB7/KBI3/PGD
RD6/PSP6/P1C
RD7/PSP7/P1D
30
Reset RB4
LED1 và RE0/RD/AN5
8
9
LED2 sáng, RE1/WR/AN6
10 LED1
RE2/CS/AN7
các LED khác RE3/MCLR/VPP
1
LED1
tắt…;Nhấn PIC18F4520 RC1
KEY1 sáu lần KEY1
cả 6 LED C1 LED5
OSC1
sáng. KEY2 8 MHZ LED5
- Biên dịch, 22p RC2
nạp chương KEY3
C2 LED6
trình và chạy
KEY4 OSC2
chương trình 22p
LED6

trên “thiết bị
thực hành vi
điều khiển”

================================================
#include<p18f4520.h> #define led1 PORTBbits.RB4
#include<delays.h> #define led2 PORTBbits.RB5
#pragma config OSC=HS #define led3 PORTBbits.RB6
#pragma config WDT=OFF #define led4 PORTBbits.RB7
#pragma config MCLRE=ON #define led5 PORTCbits.RC1
#define sw1 PORTBbits.RB0 #define led6 PORTCbits.RC2
#define sw2 PORTBbits.RB1
#define sw3 PORTBbits.RB2 void main(void)
#define sw4 PORTBbits.RB3 { unsigned char i;

==================================================================================
13
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

ADCON1=0x0f; }
TRISB=0x0f; if(i==3)
TRISC=0x00; {
PORTB=0x0f; PORTB=0x70;
PORTC=0x00; PORTC=0x00;
}
while(1) if(i==4)
{ {
if(sw1==0) PORTB=0xf0;
{ PORTC=0x00;
Delay10KTCYx(50); }
while(!sw1); if(i==5)
i++; {
} PORTB=0xf0;
PORTC=0x02;
if (i==1) }
{ if(i==6)
PORTB=0x10; {
PORTC=0x00; PORTB=0xf0;
} PORTC=0x06;
if(i==2) }
{ }
PORTB=0x30; }
PORTC=0x00;

Câu 1.9: (6 điểm)

==================================================================================
14
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Cho sơ đồ nguyên
PIC18F4520
lý như hình bên. 2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15 RB7
Viết chương 3
4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
16
17
trình đếm số lần 5
6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
18
23
LED4
RA4/T0CKI/C1OUT RC4/SDI/SDA
nhấn KEY2 và OSC2
7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
LED4
RA6/OSC2/CLKO RC6/TX/CK
hiển thị số lần OSC1 13
RA7/OSC1/CLKI RC7/RX/DT
26 RB6
nhấn trên 04 LED KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 LED3
RB1/AN10/INT1 RD1/PSP1
(LED1÷LED4) KEY3
KEY4
35
36
RB2/AN8/INT2 RD2/PSP2
21
22 LED3
RB3/AN9/CCP2A RD3/PSP3
dưới dạng số nhị LED1
LED2
37
38
RB4/KBI0/AN11 RD4/PSP4
27
28
RB5/KBI1/PGM RD5/PSP5/P1B RB5
phân. LED3
LED4
39
40
RB6/KBI2/PGC RD6/PSP6/P1C
29
30
(giả thiết số lần
RB7/KBI3/PGD RD7/PSP7/P1D
Reset LED2
8
nhấn ≤15 lần). RE0/RD/AN5
RE1/WR/AN6
9
10
LED2

- Biên dịch, nạp RE2/CS/AN7


RE3/MCLR/VPP
1 RB4
chương trình và PIC18F4520
LED1
chạy chương trình KEY1
C1 LED1
trên “thiết bị thực KEY2
OSC1
8 MHZ
hành vi điều 22p

khiển” KEY3
C2
KEY4 OSC2
22p

=================================================
#include<p18f4520.h> while(1)
#include<delays.h> {
#pragma config OSC=HS if(sw2==0)
#pragma config WDT=OFF {
#pragma config MCLRE=ON Delay10KTCYx(50);
#define sw2 PORTBbits.RB1 while(!sw2);
void main(void) x++;
{ }
unsigned char x; PORTB=x<<4;
ADCON1=0x0f; }
TRISB=0x0f; }

Câu 1.10: (6 điểm)


==================================================================================
15
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Cho sơ đồ
PIC18F4520
nguyên lý như 2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15 RB7
3 16
hình bên. 4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
17
- Viết chương 5
6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
18
23
LED4
RA4/T0CKI/C1OUT RC4/SDI/SDA
trình điều khiển OSC2
7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
LED4
RA6/OSC2/CLKO RC6/TX/CK
theo quy luật: OSC1 13
RA7/OSC1/CLKI RC7/RX/DT
26 RB6
Nhấn KEY3 KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 LED3
RB1/AN10/INT1 RD1/PSP1
một lần, (*) KEY3
KEY4
35
36
RB2/AN8/INT2 RD2/PSP2
21
22 LED3
RB3/AN9/CCP2A RD3/PSP3
LED1 sáng; LED1
LED2
37
38
RB4/KBI0/AN11 RD4/PSP4
27
28 RB5
nhấn KEY3 hai
RB5/KBI1/PGM RD5/PSP5/P1B
LED3 39 29
RB6/KBI2/PGC RD6/PSP6/P1C
LED4 40 30
lần, LED2
RB7/KBI3/PGD RD7/PSP7/P1D
Reset LED2
8
sáng… nhấn RE0/RD/AN5
RE1/WR/AN6
9
10
LED2

KEY3 bốn lần, RE2/CS/AN7


RE3/MCLR/VPP
1 RB4
LED4 sáng; PIC18F4520
LED1
nhấn KEY3 KEY1
C1 LED1
năm lần các KEY2
OSC1
8 MHZ
LED tắt; nhấn 22p

KEY3 sáu lần KEY3


C2
lặp lại (*)…
KEY4 OSC2
- Biên dịch, nạp 22p

chương trình và
chạy chương
trình trên “thiết
bị thực hành vi
điều khiển”

==================================================
#include<p18f4520.h> unsigned char x;
#include<delays.h> void main(void)
#pragma config OSC=HS {
#pragma config WDT=OFF ADCON1=0x0f;
#pragma config MCLRE=ON TRISB=0x0f;
#define sw3 PORTBbits.RB2 while(1)
#define led1 PORTBbits.RB4 {
#define led2 PORTBbits.RB5 if(sw3==0)
#define led3 PORTBbits.RB6 {
#define led4 PORTBbits.RB7 Delay10KTCYx(50);
==================================================================================
16
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

while(!sw3); if(x%5==4)
x++; led4=1;
if(x%5==1) if(x%5==0)
led1=1; PORTB=0x00;
if(x%5==2) }
led2=1; }
if(x%5==3) }
led3=1;

Câu 1.11.: (6 điểm)


Cho sơ đồ
PIC18F4520 RB7
nguyên lý LED4
2 15
như hình bên. 3
RA0/AN0/C1IN-
RA1/AN1/C2IN-
RC0/T1OSO/T13CKI
RC1/T1OSI/CCP2B
16 LED5 LED4
Viết chương 4
5
RA2/AN2/C2IN+/VREF-/CVREF RC2/CCP1/P1A
17
18
LED6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL RB6
trình điều 6
RA4/T0CKI/C1OUT RC4/SDI/SDA
23
7 24
khiển theo OSC2 14
RA5/AN4/SS/HLVDIN/C2OUT
RA6/OSC2/CLKO
RC5/SDO
RC6/TX/CK
25 LED3

yêu cầu: OSC1 13


RA7/OSC1/CLKI RC7/RX/DT
26
LED3
Nhấn KEY1 KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20
RB1/AN10/INT1 RD1/PSP1 RB5
LED1, LED2, KEY3 35
RB2/AN8/INT2 RD2/PSP2
21
KEY4 36 22
LED3 sáng, LED1 37
RB3/AN9/CCP2A RD3/PSP3
27 LED2
RB4/KBI0/AN11 RD4/PSP4
LED2
các LED khác LED3
38
39
RB5/KBI1/PGM RD5/PSP5/P1B
28
29 LED2
tắt; nhấn LED4 40
RB6/KBI2/PGC
RB7/KBI3/PGD
RD6/PSP6/P1C
RD7/PSP7/P1D
30
Reset RB4
KEY2 LED4, RE0/RD/AN5
8
9
LED5, LED6 RE1/WR/AN6
10 LED1
RE2/CS/AN7
sáng, các RE3/MCLR/VPP
1
LED1
LED khác tắt; PIC18F4520 RC1
nhấn KEY4 KEY1
các LED tắt. C1 LED5
OSC1
- Biên dịch, KEY2 8 MHZ LED5
nạp chương 22p RC2
trình và chạy KEY3
C2 LED6
chương trình
KEY4 OSC2
trên “thiết bị 22p
LED6

thực hành vi
điều khiển”

===============================================
#include<p18f4520.h> #include<delays.h>
==================================================================================
17
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

#pragma config {
OSC=HS,WDT=OFF,MCLRE=ON
if(sw1==0)
#define sw1 PORTBbits.RB0
{
#define sw2 PORTBbits.RB1
led1=1;led2=1;led3=1;
#define sw3 PORTBbits.RB2
led4=0;led5=0;led6=0;
#define sw4 PORTBbits.RB3
}
#define led1 PORTBbits.RB4
if(sw2==0)
#define led2 PORTBbits.RB5
{
#define led3 PORTBbits.RB6
led1=0;led2=0;led3=0;
#define led4 PORTBbits.RB7
led4=1;led5=1;led6=1;
#define led5 PORTCbits.RC1
}
#define led6 PORTCbits.RC2
if (sw4==0)
void main(void)
{
{
PORTB=0x00;
ADCON1=0x0f;
PORTC=0x00;
TRISB=0x0f;
}
TRISC=0x00;
}
while(1)
}

Câu 1.12: (6 điểm)

==================================================================================
18
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Cho sơ đồ
PIC18F4520 RB7
nguyên lý LED4
2 15
như hình bên. 3
RA0/AN0/C1IN-
RA1/AN1/C2IN-
RC0/T1OSO/T13CKI
RC1/T1OSI/CCP2B
16 LED5 LED4
Viết chương 4
5
RA2/AN2/C2IN+/VREF-/CVREF RC2/CCP1/P1A
17
18
LED6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL RB6
trình điều 6
RA4/T0CKI/C1OUT RC4/SDI/SDA
23
7 24
khiển theo OSC2 14
RA5/AN4/SS/HLVDIN/C2OUT
RA6/OSC2/CLKO
RC5/SDO
RC6/TX/CK
25 LED3

yêu cầu: OSC1 13


RA7/OSC1/CLKI RC7/RX/DT
26
LED3
Nhấn KEY1 KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20
RB1/AN10/INT1 RD1/PSP1 RB5
LED1, LED3, KEY3 35
RB2/AN8/INT2 RD2/PSP2
21
KEY4 36 22
LED5 sáng, LED1 37
RB3/AN9/CCP2A RD3/PSP3
27 LED2
RB4/KBI0/AN11 RD4/PSP4
LED2
các LED khác LED3
38
39
RB5/KBI1/PGM RD5/PSP5/P1B
28
29 LED2
tắt; nhấn LED4 40
RB6/KBI2/PGC
RB7/KBI3/PGD
RD6/PSP6/P1C
RD7/PSP7/P1D
30
Reset RB4
KEY2 LED2, RE0/RD/AN5
8
9
LED4, LED6 RE1/WR/AN6
10 LED1
RE2/CS/AN7
sáng, các RE3/MCLR/VPP
1
LED1
LED khác tắt; PIC18F4520 RC1
nhấn KEY4 KEY1
các LED tắt. C1 LED5
OSC1
- Biên dịch, KEY2 8 MHZ LED5
nạp chương 22p RC2
trình và chạy KEY3
C2 LED6
chương trình
KEY4 OSC2
trên “thiết bị 22p
LED6

thực hành vi
điều khiển”

==============================================
#include<p18f4520.h> #define led2 PORTBbits.RB5
#include<delays.h> #define led3 PORTBbits.RB6
#pragma config OSC=HS #define led4 PORTBbits.RB7
#pragma config WDT=OFF #define led5 PORTCbits.RC1
#pragma config MCLRE=ON #define led6 PORTCbits.RC2
#define sw1 PORTBbits.RB0 void main(void)
#define sw2 PORTBbits.RB1 {
#define sw3 PORTBbits.RB2 ADCON1=0x0f;
#define sw4 PORTBbits.RB3 TRISB=0x0f;
#define led1 PORTBbits.RB4 TRISC=0x00;
==================================================================================
19
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

while(1) led2=1;led4=1;led6=1;
{ }
if(sw1==0) if (sw4==0)
{ {
led1=1;led3=1;led5=1; PORTB=0x00;
led2=0;led4=0;led6=0; PORTC=0x00;
} }
if(sw2==0) }
{ }
led1=0;led3=0;led5=0;

Câu 1.13: (6 điểm)


Cho sơ đồ
PIC18F4520
nguyên lý như 2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15 RB7
3 16
hình bên. 4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
17
- Viết chương 5
6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
18
23
LED4
RA4/T0CKI/C1OUT RC4/SDI/SDA
trình điều khiển OSC2
7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
LED4
RA6/OSC2/CLKO RC6/TX/CK
theo yêu cầu: OSC1 13
RA7/OSC1/CLKI RC7/RX/DT
26 RB6
Nhấn KEY1 KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 LED3
RB1/AN10/INT1 RD1/PSP1
LED1 sáng; KEY3
KEY4
35
36
RB2/AN8/INT2 RD2/PSP2
21
22 LED3
RB3/AN9/CCP2A RD3/PSP3
nhấn KEY2 LED1
LED2
37
38
RB4/KBI0/AN11 RD4/PSP4
27
28 RB5
hoặc KEY3
RB5/KBI1/PGM RD5/PSP5/P1B
LED3 39 29
RB6/KBI2/PGC RD6/PSP6/P1C
LED4 40 30
hoặc KEY4, RB7/KBI3/PGD RD7/PSP7/P1D
8
Reset LED2

LED1 tắt. RE0/RD/AN5


RE1/WR/AN6
9
10
LED2

- Biên dịch, nạp RE2/CS/AN7


RE3/MCLR/VPP
1 RB4
chương trình và PIC18F4520
LED1

chạy chương
KEY1
C1 LED1
OSC1
trình trên “thiết KEY2 8 MHZ
22p
bị thực hành vi KEY3
C2
điều khiển”
KEY4 OSC2
22p

==============================================
#include<p18f4520.h> #pragma config OSC=HS

==================================================================================
20
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

#pragma config WDT=OFF TRISB=0x0f;


#pragma config MCLRE=ON TRISC=0x00;
#define sw1 PORTBbits.RB0 while(1)
#define sw2 PORTBbits.RB1 {
#define sw3 PORTBbits.RB2 if(sw1==0)
#define sw4 PORTBbits.RB3 led1=1;
#define led1 PORTBbits.RB4 if(sw2==0|sw3==0|sw4==0)
void main(void) led1=0;
{ }
ADCON1=0x0f; }

Câu 1.14: (6 điểm)

==================================================================================
21
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Cho sơ đồ
PIC18F4520 RB7
nguyên lý LED4
2 15
như hình bên. 3
RA0/AN0/C1IN-
RA1/AN1/C2IN-
RC0/T1OSO/T13CKI
RC1/T1OSI/CCP2B
16 LED5 LED4
Viết chương 4
5
RA2/AN2/C2IN+/VREF-/CVREF RC2/CCP1/P1A
17
18
LED6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL RB6
trình điều 6
RA4/T0CKI/C1OUT RC4/SDI/SDA
23
7 24
khiển theo OSC2 14
RA5/AN4/SS/HLVDIN/C2OUT
RA6/OSC2/CLKO
RC5/SDO
RC6/TX/CK
25 LED3

yêu cầu: OSC1 13


RA7/OSC1/CLKI RC7/RX/DT
26
LED3
Nhấn KEY1 KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 RB5
hoặc KEY2, KEY3 35
RB1/AN10/INT1
RB2/AN8/INT2
RD1/PSP1
RD2/PSP2
21
KEY4
cả 6 LED LED1
36
37
RB3/AN9/CCP2A RD3/PSP3
22
27 LED2
RB4/KBI0/AN11 RD4/PSP4
sáng; nhấn LED2
LED3
38
39
RB5/KBI1/PGM RD5/PSP5/P1B
28
29 LED2
KEY3 hoặc LED4 40
RB6/KBI2/PGC
RB7/KBI3/PGD
RD6/PSP6/P1C
RD7/PSP7/P1D
30
Reset RB4
KEY4 các RE0/RD/AN5
8
LED tắt. RE1/WR/AN6
9
10 LED1
- Biên dịch, RE2/CS/AN7
RE3/MCLR/VPP
1
LED1
nạp chương PIC18F4520 RC1
trình và chạy KEY1
chương trình C1 LED5
OSC1
trên “thiết bị KEY2 8 MHZ LED5
thực hành vi 22p RC2
điều khiển” KEY3
C2 LED6

KEY4 OSC2 LED6


22p

============================================
#include<p18f4520.h> #define led2 PORTBbits.RB5
#include<delays.h> #define led3 PORTBbits.RB6
#pragma config OSC=HS #define led4 PORTBbits.RB7
#pragma config WDT=OFF #define led5 PORTCbits.RC1
#pragma config MCLRE=ON #define led6 PORTCbits.RC2
#define sw1 PORTBbits.RB0 void main(void)
#define sw2 PORTBbits.RB1 {
#define sw3 PORTBbits.RB2 ADCON1=0x0f;
#define sw4 PORTBbits.RB3 TRISB=0x0f;
#define led1 PORTBbits.RB4 TRISC=0x00;

==================================================================================
22
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

while(1) if(sw2==0|sw3==0|sw4==0)
{ {
if(sw1==0) PORTB=0x00;
{ PORTC=0x00;;
PORTB=0xf0; }
PORTC=0x06; }
} }

Câu 1.15: (6 điểm)


Cho sơ đồ
PIC18F4520
nguyên lý như 2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15 RB7
3 16
hình bên. 4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
17
-Viết chương 5
6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
18
23
LED4
RA4/T0CKI/C1OUT RC4/SDI/SDA
trình đếm số lần OSC2
7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
LED4
RA6/OSC2/CLKO RC6/TX/CK
nhấn KEY4. OSC1 13
RA7/OSC1/CLKI RC7/RX/DT
26 RB6
Nếu số lần nhấn KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 LED3
RB1/AN10/INT1 RD1/PSP1
là một số lẻ, KEY3
KEY4
35
36
RB2/AN8/INT2 RD2/PSP2
21
22 LED3
RB3/AN9/CCP2A RD3/PSP3
LED4 sáng, số LED1
LED2
37
38
RB4/KBI0/AN11 RD4/PSP4
27
28 RB5
lần nhấn là một
RB5/KBI1/PGM RD5/PSP5/P1B
LED3 39 29
RB6/KBI2/PGC RD6/PSP6/P1C
LED4 40 30
số chẵn, LED4
RB7/KBI3/PGD RD7/PSP7/P1D
Reset LED2
8
tắt. RE0/RD/AN5
RE1/WR/AN6
9
10
LED2

- Biên dịch, nạp RE2/CS/AN7


RE3/MCLR/VPP
1 RB4
chương trình và PIC18F4520
LED1
chạy chương KEY1
C1 LED1
trình trên “thiết KEY2
OSC1
8 MHZ
bị thực hành vi 22p

điều khiển” KEY3


C2
KEY4 OSC2
22p

===============================================
#include<p18f4520.h> #pragma config MCLRE=ON
#include<delays.h> #define sw4 PORTBbits.RB3
#pragma config OSC=HS #define led4 PORTBbits.RB7
#pragma config WDT=OFF void main(void)

==================================================================================
23
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

{ while(!sw4);
unsigned char x; x++;
ADCON1=0x0f; }
TRISB=0x0f; if(x%2==0)
TRISC=0x00; led4=1;
while(1) else
{ led4=0;
if(sw4==0) }
{ }
Delay10KTCYx(50);

Câu 1.16: (6 điểm)


Cho sơ đồ nguyên
PIC18F4520
lý như hình bên. 2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15 RB7
- Viết chương 3
4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
16
17
trình: Đếm số lần 5
6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
18
23
LED4
RA4/T0CKI/C1OUT RC4/SDI/SDA
nhấn KEY2. Giả OSC2
7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
LED4
RA6/OSC2/CLKO RC6/TX/CK
sử số lần nhấn là OSC1 13
RA7/OSC1/CLKI RC7/RX/DT
26 RB6
n, hiển thị số dư KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 LED3
RB1/AN10/INT1 RD1/PSP1
của phép chia n/8 KEY3
KEY4
35
36
RB2/AN8/INT2 RD2/PSP2
21
22 LED3
RB3/AN9/CCP2A RD3/PSP3
(n%8) trên 03 LED1
LED2
37
38
RB4/KBI0/AN11 RD4/PSP4
27
28
RB5/KBI1/PGM RD5/PSP5/P1B RB5
LED LED3
LED4
39
40
RB6/KBI2/PGC RD6/PSP6/P1C
29
30
RB7/KBI3/PGD RD7/PSP7/P1D
(LED1÷LED3) 8
Reset LED2

dưới dạng số nhị RE0/RD/AN5


RE1/WR/AN6
9
10
LED2
RE2/CS/AN7
phân. RE3/MCLR/VPP
1 RB4
- Biên dịch, nạp PIC18F4520
LED1
chương trình và KEY1
C1 LED1
chạy chương trình KEY2
OSC1
8 MHZ
trên “thiết bị thực 22p

hành vi điều KEY3


C2
khiển”
KEY4 OSC2
22p

================================================
#include<p18f4520.h> #include<delays.h>

==================================================================================
24
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

#pragma config OSC=HS {


#pragma config WDT=OFF if(sw2==0)
#pragma config MCLRE=ON {
#define sw2 PORTBbits.RB1 Delay10KTCYx(50);
void main(void) while(!sw2);
{ x++;
unsigned char x; }
ADCON1=0x0f; PORTB=x%8<<4;
TRISB=0x0f; }
TRISC=0x00; }
while(1)

Câu 1.17: (6 điểm)


Cho sơ đồ nguyên
PIC18F4520
lý như hình bên. 2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15 RB7
- Viết chương 3
4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
16
17
trình: Đếm số lần 5
6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
18
23
LED4
RA4/T0CKI/C1OUT RC4/SDI/SDA
nhấn KEY2. Giả OSC2
7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
LED4
RA6/OSC2/CLKO RC6/TX/CK
sử số lần nhấn là OSC1 13
RA7/OSC1/CLKI RC7/RX/DT
26 RB6
n, hiển thị số dư KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 LED3
RB1/AN10/INT1 RD1/PSP1
của phép chia n/4 KEY3
KEY4
35
36
RB2/AN8/INT2 RD2/PSP2
21
22 LED3
RB3/AN9/CCP2A RD3/PSP3
(n%4) trên 02 LED1
LED2
37
38
RB4/KBI0/AN11 RD4/PSP4
27
28
RB5/KBI1/PGM RD5/PSP5/P1B RB5
LED LED3
LED4
39
40
RB6/KBI2/PGC RD6/PSP6/P1C
29
30
RB7/KBI3/PGD RD7/PSP7/P1D
(LED1÷LED2) 8
Reset LED2

dưới dạng số nhị RE0/RD/AN5


RE1/WR/AN6
9
10
LED2
RE2/CS/AN7
phân. RE3/MCLR/VPP
1 RB4
- Biên dịch, nạp PIC18F4520
LED1
chương trình và KEY1
C1 LED1
chạy chương trình KEY2
OSC1
8 MHZ
trên “thiết bị thực 22p

hành vi điều KEY3


C2
khiển”
KEY4 OSC2
22p

==================================================================================
25
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

============================================
#include<p18f4520.h> while(1)
#include<delays.h> {
#pragma config OSC=HS if(sw2==0)
#pragma config WDT=OFF {
#pragma config MCLRE=ON Delay10KTCYx(50);
#define sw2 PORTBbits.RB1 while(!sw2);
void main(void) x++;
{ }
unsigned char x; PORTB=x%4<<4;
ADCON1=0x0f; }
TRISB=0x0f; }
TRISC=0x00;

Câu 1.18: (6 điểm)


Cho sơ đồ
PIC18F4520
nguyên lý như 2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15 RB7
3 16
hình bên. 4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
17
Viết chương trình 5
6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
18
23
LED4
RA4/T0CKI/C1OUT RC4/SDI/SDA
đọc trạng thái của OSC2
7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
LED4
RA6/OSC2/CLKO RC6/TX/CK
OSC1
các phím 13
RA7/OSC1/CLKI RC7/RX/DT
26 RB6
KEY1÷KEY3 và KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 LED3
RB1/AN10/INT1 RD1/PSP1
hiển thị trạng thái KEY3
KEY4
35
36
RB2/AN8/INT2 RD2/PSP2
21
22 LED3
RB3/AN9/CCP2A RD3/PSP3
của các phím trên LED1
LED2
37
38
RB4/KBI0/AN11 RD4/PSP4
27
28
RB5/KBI1/PGM RD5/PSP5/P1B RB5
LED1÷LED3 LED3
LED4
39
40
RB6/KBI2/PGC RD6/PSP6/P1C
29
30
(nhấn LED sáng
RB7/KBI3/PGD RD7/PSP7/P1D
Reset LED2
8
và ngược lại). RE0/RD/AN5
RE1/WR/AN6
9
10
LED2

- Biên dịch, nạp RE2/CS/AN7


RE3/MCLR/VPP
1 RB4
chương trình và PIC18F4520
LED1
chạy chương KEY1
C1 LED1
trình trên “thiết KEY2
OSC1
8 MHZ
bị thực hành vi 22p

điều khiển” KEY3


C2
KEY4 OSC2
22p

==================================================================================
26
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

================================================
#include<p18f4520.h> {
#pragma config OSC=HS ADCON1=0x0f;
#pragma config WDT=OFF TRISB=0x0f;
#pragma config MCLRE=ON TRISC=0x00;
#define sw1 PORTBbits.RB0 while(1)
#define sw2 PORTBbits.RB1 {
#define sw3 PORTBbits.RB2 led1=!sw1;
#define led1 PORTBbits.RB4 led2=!sw2;
#define led2 PORTBbits.RB5 led3=!sw3;
#define led3 PORTBbits.RB6 }
void main(void) }

Cho sơ đồ
PIC18F4520
nguyên lý như 2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15 RB7
3 16
hình bên. 4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
17
Viết chương trình 5
6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
18
23
LED4
RA4/T0CKI/C1OUT RC4/SDI/SDA
đọc trạng thái của OSC2
7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
LED4
RA6/OSC2/CLKO RC6/TX/CK
OSC1
các phím 13
RA7/OSC1/CLKI RC7/RX/DT
26 RB6
KEY1÷KEY3 và KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 LED3
RB1/AN10/INT1 RD1/PSP1
hiển thị trạng thái KEY3
KEY4
35
36
RB2/AN8/INT2 RD2/PSP2
21
22 LED3
RB3/AN9/CCP2A RD3/PSP3
của các phím trên LED1
LED2
37
38
RB4/KBI0/AN11 RD4/PSP4
27
28
RB5/KBI1/PGM RD5/PSP5/P1B RB5
LED1÷LED3 LED3
LED4
39
40
RB6/KBI2/PGC RD6/PSP6/P1C
29
30
(nhấn LED sáng
RB7/KBI3/PGD RD7/PSP7/P1D
Reset LED2
8
và ngược lại). RE0/RD/AN5
RE1/WR/AN6
9
10
LED2

- Biên dịch, nạp RE2/CS/AN7


RE3/MCLR/VPP
1 RB4
chương trình và PIC18F4520
LED1
chạy chương KEY1
C1 LED1
trình trên “thiết KEY2
OSC1
8 MHZ
bị thực hành vi 22p

điều khiển” KEY3


C2
KEY4 OSC2
22p

==================================================================================
27
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Câu 1.19: (6 điểm)


Cho sơ đồ
PIC18F4520
nguyên lý như 2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15 RB7
3 16
hình bên. 4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
17
Viết chương 5
6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
18
23
LED4
RA4/T0CKI/C1OUT RC4/SDI/SDA
trình đọc điều OSC2
7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
LED4
RA6/OSC2/CLKO RC6/TX/CK
khiển theo yêu OSC1 13
RA7/OSC1/CLKI RC7/RX/DT
26 RB6
cầu: Nhần KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 LED3
RB1/AN10/INT1 RD1/PSP1
KEY2, LED2 KEY3
KEY4
35
36
RB2/AN8/INT2 RD2/PSP2
21
22 LED3
RB3/AN9/CCP2A RD3/PSP3
sáng; nhấn LED1
LED2
37
38
RB4/KBI0/AN11 RD4/PSP4
27
28 RB5
đồng thời
RB5/KBI1/PGM RD5/PSP5/P1B
LED3 39 29
RB6/KBI2/PGC RD6/PSP6/P1C
LED4 40 30
RB7/KBI3/PGD RD7/PSP7/P1D
KEY3 và 8
Reset LED2
RE0/RD/AN5
KEY4, LED2 RE1/WR/AN6
9
10
LED2

tắt. RE2/CS/AN7
RE3/MCLR/VPP
1 RB4
- Biên dịch, nạp PIC18F4520
LED1
chương trình và KEY1
C1 LED1
chạy chương KEY2
OSC1
8 MHZ
trình trên “thiết 22p

bị thực hành vi KEY3


C2
điều khiển”
KEY4 OSC2
22p

==================================================================================
28
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

==================================================
#include<p18f4520.h> TRISB=0x0f;
#pragma config OSC=HS TRISC=0x00;
#pragma config WDT=OFF while(1)
#pragma config MCLRE=ON {
#define sw2 PORTBbits.RB1 if(sw2==0)
#define sw4 PORTBbits.RB3 led2=1;
#define sw3 PORTBbits.RB2 if(sw3==0 & sw4==0)
#define led2 PORTBbits.RB5 led2=0;
void main(void) }
{ }
ADCON1=0x0f;

Câu 1.20: (6 điểm)


Cho sơ đồ
PIC18F4520
nguyên lý như 2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15 RB7
3 16
hình bên. 4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
17
- Dùng chế độ 8 5
6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
18
23
LED4
RA4/T0CKI/C1OUT RC4/SDI/SDA
bit của timer0 OSC2
7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
LED4
RA6/OSC2/CLKO RC6/TX/CK
viết chương OSC1 13
RA7/OSC1/CLKI RC7/RX/DT
26 RB6
trình tạo xung KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 LED3
RB1/AN10/INT1 RD1/PSP1
có tần số 10Hz KEY3
KEY4
35
36
RB2/AN8/INT2 RD2/PSP2
21
22 LED3
RB3/AN9/CCP2A RD3/PSP3
trên chân RB4. LED1
LED2
37
38
RB4/KBI0/AN11 RD4/PSP4
27
28 RB5
Yêu cầu:
RB5/KBI1/PGM RD5/PSP5/P1B
LED3 39 29
RB6/KBI2/PGC RD6/PSP6/P1C
LED4 40 30
+ Sử dụng bộ
RB7/KBI3/PGD RD7/PSP7/P1D
Reset LED2
8
chia chia tần RE0/RD/AN5
RE1/WR/AN6
9
10
LED2

trước (Prescaler) RE2/CS/AN7


RE3/MCLR/VPP
1 RB4
với hệ số chia PIC18F4520
LED1
bằng 16. KEY1
C1 LED1
+ Bộ tạo dao KEY2
OSC1
8 MHZ
động hoạt động 22p

ở chế độ HS. KEY3


C2
- Biên dịch, nạp
KEY4 OSC2
chương trình và 22p

chạy chương
trình trên “thiết
==================================================================================
29
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

bị thực hành vi
điều khiển”

===============================================
#include<p18f4520.h> while(1)
#include<delays.h> { for(i=0;i<25;i++)
#include<stdio.h> {
#pragma config OSC=HS TMR0L=256-250;
#pragma config WDT=OFF T0CONbits.TMR0ON=1;// bat
timer0
#pragma config MCLRE=ON
while(!INTCONbits.TMR0IF);// cho
#define xung PORTBbits.RB4 co tran = 1
void main() T0CONbits.TMR0ON=0;
{ INTCONbits.TMR0IF=0;// 1 US DE
THUC HIEN 1 LENH.
unsigned char i;
}
T0CON=0x43;
xung=~xung;
ADCON1=0x0f;
}
TRISB=0x00;
}
xung=1;

Câu 1.21: (6 điểm)

==================================================================================
30
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Cho sơ đồ
PIC18F4520
nguyên lý như 2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15 RB7
3 16
hình bên. 4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
17
- Dùng chế độ 5
6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
18
23
LED4
RA4/T0CKI/C1OUT RC4/SDI/SDA
16 bit của OSC2
7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
LED4
RA6/OSC2/CLKO RC6/TX/CK
timer0 viết OSC1 13
RA7/OSC1/CLKI RC7/RX/DT
26 RB6
chương trình tạo KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 LED3
RB1/AN10/INT1 RD1/PSP1
xung có tần số KEY3
KEY4
35
36
RB2/AN8/INT2 RD2/PSP2
21
22 LED3
RB3/AN9/CCP2A RD3/PSP3
5Hz trên chân LED1
LED2
37
38
RB4/KBI0/AN11 RD4/PSP4
27
28
RB5/KBI1/PGM RD5/PSP5/P1B RB5
RB5. LED3
LED4
39
40
RB6/KBI2/PGC RD6/PSP6/P1C
29
30
Yêu cầu:
RB7/KBI3/PGD RD7/PSP7/P1D
Reset LED2
8
+ Sử dụng bộ RE0/RD/AN5
RE1/WR/AN6
9
10
LED2

chia chia tần RE2/CS/AN7


RE3/MCLR/VPP
1 RB4
trước (Prescaler) PIC18F4520
LED1
với hệ số chia KEY1
C1 LED1
bằng 8. KEY2
OSC1
8 MHZ
+ Bộ tạo dao 22p

động hoạt động KEY3


C2
ở chế độ HS.
KEY4 OSC2
- Biên dịch, nạp 22p

chương trình và
chạy chương
trình trên “thiết
bị thực hành vi
điều khiển”
==================================================
#include<p18f4520.h> TRISB=0x00;
#include<stdio.h> PORTB=0x00;
#include<delays.h> ADCON1=0x0f;
#pragma config OSC=HS xung=1;
#pragma config WDT=OFF TMR0H=(65536-25000)/256;
#pragma config MCLRE=ON while(1)
#define xung PORTBbits.RB5 {
void main(void) TMR0L=(65536-25000)%256;
{ T0CONbits.TMR0ON=1;// bat
timer0
T0CON=0x02;

==================================================================================
31
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

while(!INTCONbits.TMR0IF);// cho xung=~xung;


co tran = 1
}
T0CONbits.TMR0ON=0;//tat timer0
}
INTCONbits.TMR0IF=0;// 1 us de
thuc hien 1 lenh

Câu 1.22: (6 điểm)


Cho sơ đồ
PIC18F4520
nguyên lý như 2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15 RB7
3 16
hình bên. 4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
17
- Dùng chế độ 8 5
6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
18
23
LED4
RA4/T0CKI/C1OUT RC4/SDI/SDA
bit của timer0 OSC2
7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
LED4
RA6/OSC2/CLKO RC6/TX/CK
viết chương OSC1 13
RA7/OSC1/CLKI RC7/RX/DT
26 RB6
trình tạo xung KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 LED3
RB1/AN10/INT1 RD1/PSP1
có tần số 2Hz KEY3
KEY4
35
36
RB2/AN8/INT2 RD2/PSP2
21
22 LED3
RB3/AN9/CCP2A RD3/PSP3
trên chân RB6. LED1
LED2
37
38
RB4/KBI0/AN11 RD4/PSP4
27
28 RB5
Yêu cầu:
RB5/KBI1/PGM RD5/PSP5/P1B
LED3 39 29
RB6/KBI2/PGC RD6/PSP6/P1C
LED4 40 30
+ Sử dụng bộ
RB7/KBI3/PGD RD7/PSP7/P1D
Reset LED2
8
chia chia tần RE0/RD/AN5
RE1/WR/AN6
9
10
LED2

trước (Prescaler) RE2/CS/AN7


RE3/MCLR/VPP
1 RB4
với hệ số chia PIC18F4520
LED1
bằng 32. KEY1
C1 LED1
+ Bộ tạo dao KEY2
OSC1
8 MHZ
động hoạt động 22p

ở chế độ HS. KEY3


C2
- Biên dịch, nạp
KEY4 OSC2
chương trình và 22p

chạy chương
trình trên “thiết
bị thực hành vi
điều khiển”

================================================
#include<p18f4520.h> #pragma config WDT=OFF
#include<stdio.h> #pragma config MCLRE=ON
#include<delays.h> #define xung PORTBbits.RB6
#pragma config OSC=HS void main(void)

==================================================================================
32
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

{ T0CONbits.TMR0ON=1;// bat
timer0
T0CON=0x04;
while(!INTCONbits.TMR0IF);// cho
TRISB=0x00; co tran = 1
PORTB=0x00; T0CONbits.TMR0ON=0;//tat timer0
ADCON1=0x0f; INTCONbits.TMR0IF=0;// 1 US DE
THUC HIEN 1 LENH.
xung=1;
xung=~xung;
TMR0H=(65536-15625)/256;
}
while(1)
}
{
TMR0L=(65536-15625)%256;

Câu 1.23: (6 điểm)

==================================================================================
33
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Cho sơ đồ
PIC18F4520
nguyên lý như 2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15 RB7
3 16
hình bên. 4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
17
- Dùng chế độ 5
6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
18
23
LED4
RA4/T0CKI/C1OUT RC4/SDI/SDA
16 bit của OSC2
7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
LED4
RA6/OSC2/CLKO RC6/TX/CK
timer0 viết OSC1 13
RA7/OSC1/CLKI RC7/RX/DT
26 RB6
chương trình tạo KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 LED3
RB1/AN10/INT1 RD1/PSP1
xung có tần số KEY3
KEY4
35
36
RB2/AN8/INT2 RD2/PSP2
21
22 LED3
RB3/AN9/CCP2A RD3/PSP3
1Hz trên chân LED1
LED2
37
38
RB4/KBI0/AN11 RD4/PSP4
27
28
RB5/KBI1/PGM RD5/PSP5/P1B RB5
RB7. LED3
LED4
39
40
RB6/KBI2/PGC RD6/PSP6/P1C
29
30
Yêu cầu:
RB7/KBI3/PGD RD7/PSP7/P1D
Reset LED2
8
+ Sử dụng bộ RE0/RD/AN5
RE1/WR/AN6
9
10
LED2

chia chia tần RE2/CS/AN7


RE3/MCLR/VPP
1 RB4
trước (Prescaler) PIC18F4520
LED1
với hệ số chia KEY1
C1 LED1
bằng 16. KEY2
OSC1
8 MHZ
+ Bộ tạo dao 22p

động hoạt động KEY3


C2
ở chế độ HS.
KEY4 OSC2
- Biên dịch, nạp 22p

chương trình và
chạy chương
trình trên “thiết
bị thực hành vi
điều khiển”

================================================
#include<p18f4520.h> T0CON=0x03;
#include<stdio.h> TRISB=0x00;
#include<delays.h> PORTB=0x00;
#pragma config OSC=HS ADCON1=0x0f;
#pragma config WDT=OFF xung=1;
#pragma config MCLRE=ON TMR0H=(65536-62500)/256;

#define xung PORTBbits.RB7


while(1)
void main(void)
{
{

==================================================================================
34
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

TMR0L=(65536-62500)%256; INTCONbits.TMR0IF=0;// 1 US DE
THUC HIEN 1 LENH.
T0CONbits.TMR0ON=1;// bat
timer0 xung=~xung;
while(!INTCONbits.TMR0IF);// cho }
co tran = 1
}
T0CONbits.TMR0ON=0;//tat timer0

Câu 1.24: (6 điểm)


==================================================================================
35
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Cho sơ đồ
PIC18F4520
nguyên lý như 2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15 RB7
3 16
hình bên. 4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
17
- Dùng chế độ 8 5
6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
18
23
LED4
RA4/T0CKI/C1OUT RC4/SDI/SDA
bit của timer0 OSC2
7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
LED4
RA6/OSC2/CLKO RC6/TX/CK
viết chương OSC1 13
RA7/OSC1/CLKI RC7/RX/DT
26 RB6
trình tạo xung KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 LED3
RB1/AN10/INT1 RD1/PSP1
có tần số 4Hz KEY3
KEY4
35
36
RB2/AN8/INT2 RD2/PSP2
21
22 LED3
RB3/AN9/CCP2A RD3/PSP3
trên chân RC0. LED1
LED2
37
38
RB4/KBI0/AN11 RD4/PSP4
27
28 RB5
Yêu cầu:
RB5/KBI1/PGM RD5/PSP5/P1B
LED3 39 29
RB6/KBI2/PGC RD6/PSP6/P1C
LED4 40 30
+ Sử dụng bộ
RB7/KBI3/PGD RD7/PSP7/P1D
Reset LED2
8
chia chia tần RE0/RD/AN5
RE1/WR/AN6
9
10
LED2

trước (Prescaler) RE2/CS/AN7


RE3/MCLR/VPP
1 RB4
với hệ số chia PIC18F4520
LED1
bằng 64. KEY1
C1 LED1
+ Bộ tạo dao KEY2
OSC1
8 MHZ
động hoạt động 22p

ở chế độ HS. KEY3


C2
- Biên dịch, nạp
KEY4 OSC2
chương trình và 22p

chạy chương
trình trên “thiết
bị thực hành vi
điều khiển”
=================================================
#include<p18f4520.h> PORTC=0x00;
#include<stdio.h> ADCON1=0x0f;
#include<delays.h> xung=1;
#pragma config OSC=HS while(1)
#pragma config WDT=OFF {for(i=0;i<16;i++)
#pragma config MCLRE=ON {
#define xung PORTCbits.RC0 TMR0L=256-250+6;
void main(void) T0CONbits.TMR0ON=1;// bat
timer0
{ unsigned char i;
while(!INTCONbits.TMR0IF);// cho
T0CON=0x45; co tran = 1
TRISC=0x00; T0CONbits.TMR0ON=0;//tat timer0
==================================================================================
36
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

INTCONbits.TMR0IF=0;// 1 US DE xung=~xung;
THUC HIEN 1 LENH.
}
}
}

Câu 1.25: (6 điểm)

==================================================================================
37
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Cho sơ đồ
PIC18F4520
nguyên lý như 2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15 RB7
3 16
hình bên. 4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
17
- Sử dụng ngắt 5
6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
18
23
LED4
RA4/T0CKI/C1OUT RC4/SDI/SDA
ngoài INT0, OSC2
7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
LED4
RA6/OSC2/CLKO RC6/TX/CK
viết chương OSC1 13
RA7/OSC1/CLKI RC7/RX/DT
26 RB6
trình điều khiển KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 LED3
RB1/AN10/INT1 RD1/PSP1
LED1 nhấp KEY3
KEY4
35
36
RB2/AN8/INT2 RD2/PSP2
21
22 LED3
RB3/AN9/CCP2A RD3/PSP3
nháy liên tục. LED1
LED2
37
38
RB4/KBI0/AN11 RD4/PSP4
27
28 RB5
Khi nhấn
RB5/KBI1/PGM RD5/PSP5/P1B
LED3 39 29
RB6/KBI2/PGC RD6/PSP6/P1C
LED4 40 30
RB7/KBI3/PGD RD7/PSP7/P1D
KEY1, LED1 8
Reset LED2

tắt, LED2 nhấp RE0/RD/AN5


RE1/WR/AN6
9
10
LED2

nháy 10 lần. RE2/CS/AN7


RE3/MCLR/VPP
1 RB4
- Biên dịch, nạp PIC18F4520
LED1
chương trình và KEY1
C1 LED1
chạy chương KEY2
OSC1
8 MHZ
trình trên “thiết 22p

bị thực hành vi KEY3


C2
điều khiển”
KEY4 OSC2
22p

================================================
#include<p18f4520.h> ngat_INT0();
#include<delays.h> }
#include<stdio.h> #pragma code
#pragma config OSC=HS #pragma interrupt ngat_INT0
#pragma config WDT=OFF void ngat_INT0(void)
#pragma config MCLRE=ON {
#define led1 PORTBbits.RB4 unsigned char i;
#define led2 PORTBbits.RB5 if(INTCONbits.INT0IF==1)
void ngat_INT0(); INTCONbits.INT0IF=0;
#pragma code ngat_cao=0x08 led1=0;
void interrupt_ngat_cao(void) for(i=0;i<10;i++)
{ {

==================================================================================
38
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

led2=1; INTCONbits.GIE=1;
Delay10KTCYx(50); while(1)
led2=0; {
Delay10KTCYx(50); led1=1;
} Delay10KTCYx(50);
} led1=0;
void main(void) Delay10KTCYx(50);
{ }
ADCON1=0x0f;
TRISB=0x0f; }
INTCONbits.INT0IE=1;

Câu 1.26: (6 điểm)


Cho sơ đồ
PIC18F4520
nguyên lý như 2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15 RB7
3 16
hình bên. 4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
17
- Sử dụng ngắt 5
6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
18
23
LED4
RA4/T0CKI/C1OUT RC4/SDI/SDA
ngoài INT1, OSC2
7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
LED4
RA6/OSC2/CLKO RC6/TX/CK
viết chương OSC1 13
RA7/OSC1/CLKI RC7/RX/DT
26 RB6
trình điều khiển KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 LED3
RB1/AN10/INT1 RD1/PSP1
LED2 nhấp KEY3
KEY4
35
36
RB2/AN8/INT2 RD2/PSP2
21
22 LED3
RB3/AN9/CCP2A RD3/PSP3
nháy liên tục. LED1
LED2
37
38
RB4/KBI0/AN11 RD4/PSP4
27
28 RB5
Khi nhấn
RB5/KBI1/PGM RD5/PSP5/P1B
LED3 39 29
RB6/KBI2/PGC RD6/PSP6/P1C
LED4 40 30
RB7/KBI3/PGD RD7/PSP7/P1D
KEY2, LED2 8
Reset LED2

tắt, LED3 nhấp RE0/RD/AN5


RE1/WR/AN6
9
10
LED2

nháy 10 lần. RE2/CS/AN7


RE3/MCLR/VPP
1 RB4
- Biên dịch, nạp PIC18F4520
LED1
chương trình và KEY1
C1 LED1
chạy chương KEY2
OSC1
8 MHZ
trình trên “thiết 22p

bị thực hành vi KEY3


C2
điều khiển”
KEY4 OSC2
22p

=================================================

==================================================================================
39
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

#include<p18f4520.h> led3=1;
#include<delays.h> Delay10KTCYx(50);
#pragma config OSC=HS led3=0;
#pragma config WDT=OFF Delay10KTCYx(50);
#pragma config MCLRE=ON }
#define led2 PORTBbits.RB5 }
#define led3 PORTBbits.RB6 void main(void)
void ngat_INT1(); {
#pragma code ngat_cao=0x08 ADCON1=0x0f;
void interrupt_ngat_cao(void) TRISB=0x0f;
{ INTCONbits.GIE=1;
ngat_INT1(); INTCON3bits.INT1IE=1;
}
#pragma code
#pragma interrupt ngat_INT1 while(1)
void ngat_INT1(void) {
{ unsigned char i; led2=1;
if(INTCON3bits.INT1IF==1) Delay10KTCYx(50);
INTCON3bits.INT1IF=0; led2=0;
led2=0; Delay10KTCYx(50);
for(i=0;i<10;i++) }
{ }

Câu 1.27: (6 điểm)


==================================================================================
40
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Cho sơ đồ
PIC18F4520
nguyên lý như 2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15 RB7
3 16
hình bên. 4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
17
- Sử dụng ngắt 5
6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
18
23
LED4
RA4/T0CKI/C1OUT RC4/SDI/SDA
ngoài INT1, OSC2
7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
LED4
RA6/OSC2/CLKO RC6/TX/CK
viết chương OSC1 13
RA7/OSC1/CLKI RC7/RX/DT
26 RB6
trình điều khiển KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 LED3
RB1/AN10/INT1 RD1/PSP1
LED4 nhấp KEY3
KEY4
35
36
RB2/AN8/INT2 RD2/PSP2
21
22 LED3
RB3/AN9/CCP2A RD3/PSP3
nháy liên tục. LED1
LED2
37
38
RB4/KBI0/AN11 RD4/PSP4
27
28 RB5
Khi nhấn
RB5/KBI1/PGM RD5/PSP5/P1B
LED3 39 29
RB6/KBI2/PGC RD6/PSP6/P1C
LED4 40 30
RB7/KBI3/PGD RD7/PSP7/P1D
KEY2, LED4 8
Reset LED2

tắt, LED1 nhấp RE0/RD/AN5


RE1/WR/AN6
9
10
LED2

nháy 15 lần. RE2/CS/AN7


RE3/MCLR/VPP
1 RB4
- Biên dịch, nạp PIC18F4520
LED1
chương trình và KEY1
C1 LED1
chạy chương KEY2
OSC1
8 MHZ
trình trên “thiết 22p

bị thực hành vi KEY3


C2
điều khiển”
KEY4 OSC2
22p

===============================================
#include<p18f4520.h> ngat_INT1();
#include<delays.h> }
#pragma config OSC=HS #pragma code
#pragma config WDT=OFF #pragma interrupt ngat_INT1
#pragma config MCLRE=ON void ngat_INT1(void)
#define led1 PORTBbits.RB4 { unsigned char i;
#define led4 PORTBbits.RB7 if(INTCON3bits.INT1IF==1)
void ngat_INT1(); INTCON3bits.INT1IF=0;
#pragma code ngat_cao=0x08 led4=0;
void interrupt_ngat_cao(void) for(i=0;i<15;i++)
{ {

==================================================================================
41
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

led1=1; INTCON3bits.INT1IE=1;
Delay10KTCYx(50);
led1=0;
Delay10KTCYx(50); while(1)
} {
} led4=1;
void main(void) Delay10KTCYx(50);
{ led4=0;
ADCON1=0x0f; Delay10KTCYx(50);
TRISB=0x0f; }
INTCONbits.GIE=1; }

Câu 1.28: (6 điểm)


Cho sơ đồ
PIC18F4520
nguyên lý như 2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15 RB7
3 16
hình bên. 4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
17
- Sử dụng ngắt 5
6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
18
23
LED4
RA4/T0CKI/C1OUT RC4/SDI/SDA
ngoài INT1, viết OSC2
7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
LED4
RA6/OSC2/CLKO RC6/TX/CK
chương trình đếm OSC1 13
RA7/OSC1/CLKI RC7/RX/DT
26 RB6
số lần nhấn KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 LED3
RB1/AN10/INT1 RD1/PSP1
KEY2 và hiển thị KEY3
KEY4
35
36
RB2/AN8/INT2 RD2/PSP2
21
22 LED3
RB3/AN9/CCP2A RD3/PSP3
trên LED1
LED2
37
38
RB4/KBI0/AN11 RD4/PSP4
27
28
RB5/KBI1/PGM RD5/PSP5/P1B RB5
LED1÷LED4 LED3
LED4
39
40
RB6/KBI2/PGC RD6/PSP6/P1C
29
30
dưới dạng mã số
RB7/KBI3/PGD RD7/PSP7/P1D
Reset LED2
8
nhị phân. RE0/RD/AN5
RE1/WR/AN6
9
10
LED2

(giả thiết số lần RE2/CS/AN7


RE3/MCLR/VPP
1 RB4
nhấn ≤15 lần). PIC18F4520
LED1
- Biên dịch, nạp KEY1
C1 LED1
chương trình và KEY2
OSC1
8 MHZ
chạy chương 22p

trình trên “thiết KEY3


C2
bị thực hành vi
KEY4 OSC2
điều khiển” 22p

=================================================

==================================================================================
42
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

#include<p18f4520.h> {
#include<delays.h> Delay10KTCYx(20);
#pragma config OSC=HS INTCON3bits.INT1IF=0;
#pragma config WDT=OFF i++;
#pragma config MCLRE=ON }
unsigned char i; }
void ngat_INT1(); void main(void)
#pragma code ngat_cao=0x08 {
void interrupt_ngat_cao(void) ADCON1=0x0f;
{ TRISB=0x0f;
ngat_INT1(); INTCONbits.GIE=1;
} INTCON3bits.INT1IE=1;
#pragma code while(1)
#pragma interrupt ngat_INT1 {
void ngat_INT1(void) PORTB=i<<4;
{ }
if(INTCON3bits.INT1IF==1) }

Câu 1.29: (6 điểm)

==================================================================================
43
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Cho sơ đồ
PIC18F4520
nguyên lý như 2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15 RB7
3 16
hình bên. 4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
17
- Sử dụng ngắt 5
6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
18
23
LED4
RA4/T0CKI/C1OUT RC4/SDI/SDA
ngoài INT0, viết OSC2
7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
LED4
RA6/OSC2/CLKO RC6/TX/CK
chương trình đếm OSC1 13
RA7/OSC1/CLKI RC7/RX/DT
26 RB6
số lần nhấn KEY1
KEY2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20 LED3
RB1/AN10/INT1 RD1/PSP1
KEY1 và hiển thị KEY3
KEY4
35
36
RB2/AN8/INT2 RD2/PSP2
21
22 LED3
RB3/AN9/CCP2A RD3/PSP3
trên LED1
LED2
37
38
RB4/KBI0/AN11 RD4/PSP4
27
28
RB5/KBI1/PGM RD5/PSP5/P1B RB5
LED1÷LED4 LED3
LED4
39
40
RB6/KBI2/PGC RD6/PSP6/P1C
29
30
dưới dạng mã số
RB7/KBI3/PGD RD7/PSP7/P1D
Reset LED2
8
nhị phân. RE0/RD/AN5
RE1/WR/AN6
9
10
LED2

(giả thiết số lần RE2/CS/AN7


RE3/MCLR/VPP
1 RB4
nhấn ≤15 lần). PIC18F4520
LED1
- Biên dịch, nạp KEY1
C1 LED1
chương trình và KEY2
OSC1
8 MHZ
chạy chương 22p

trình trên “thiết KEY3


C2
bị thực hành vi
KEY4 OSC2
điều khiển” 22p

==============================================
#include<p18f4520.h> #pragma code
#include<delays.h> #pragma interrupt ngat_INT0
#pragma config OSC=HS void ngat_INT0(void)
#pragma config WDT=OFF {
#pragma config MCLRE=ON if(INTCONbits.INT0IF==1)
unsigned char i; {
void ngat_INT0(); Delay10KTCYx(20);
#pragma code ngat_cao=0x08 INTCONbits.INT0IF=0;
void interrupt_ngat_cao(void) i++;
{ }
ngat_INT0(); }
} void main(void)

==================================================================================
44
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

{ while(1)
ADCON1=0x0f; {
TRISB=0x0f; PORTB=i<<4;
INTCONbits.GIE=1; }
INTCONbits.INT0IE=1; }

2.1. Lập trình tạo 02 xung sử dụng 02 bộ timer, sử dụng ngắt timer (5
câu)
Câu 2.1: (4 điểm)
- Vẽ sơ đồ mạch điện
mô phỏng như hình U?
2 15
bên. 3
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
16
RA1/AN1/C2IN- RC1/T1OSI/CCP2B
- Viết chương trình 4
5
RA2/AN2/C2IN+/VREF-/CVREF RC2/CCP1/P1A
17
18
tạo xung trên chân 6
RA3/AN3/C1IN+/VREF+
RA4/T0CKI/C1OUT
RC3/SCK/SCL
RC4/SDI/SDA
23
7 24
RD0 có tần số RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO

D
A

B
14 25
RA6/OSC2/CLKO RC6/TX/CK
=1KHz sử dụng 13 26

KenhC

KenhD
RA7/OSC1/CLKI RC7/RX/DT
33 19 KenhC
Timer0; 34
RB0/AN12/FLT0/INT0 RD0/PSP0
20
RB1/AN10/INT1 RD1/PSP1
-Tạo xung trên chân 35
36
RB2/AN8/INT2 RD2/PSP2
21
22
KenhD

RD2 có tần số 37
RB3/AN9/CCP2A
RB4/KBI0/AN11
RD3/PSP3
RD4/PSP4
27
38 28
=5KHz sử dụng 39
RB5/KBI1/PGM
RB6/KBI2/PGC
RD5/PSP5/P1B
RD6/PSP6/P1C
29
40 30
ngắt từ Timer1. RB7/KBI3/PGD RD7/PSP7/P1D

- Cho biết bộ dao RE0/RD/AN5


8
9
RE1/WR/AN6
động thạch anh có RE2/CS/AN7
10
1
tần số = RE3/MCLR/VPP
PIC18F4520
4MHz, hoạt động ở
chế độ HS.
===================================================
#include<p18f4520.h> #pragma config MCLRE=ON
#include<stdio.h> #pragma config WDT=OFF
#include<delays.h> #pragma config OSC=HS
==================================================================================
45
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

#define xung PORTDbits.RD0 T0CONbits.T0CS=0;


#define xung1 PORTDbits.RD2 TRISD=0X00;
void ngat_timer1(void); PORTD=0x00;
#pragma code ngat_thap=0x18 ADCON1=0x0f;
void ngat_thap(void) PIR1bits.TMR1IF=1;
{ PIE1bits.TMR1IE=1;
ngat_timer1(); IPR1bits.TMR1IP=1;
} xung=0;
#pragma code xung1=1;
#pragma interrupt ngat_timer1 while(1)
void ngat_timer1(void) {
{PIR1bits.TMR1IF=0; TMR0L=256-250+10;
T1CONbits.TMR1ON=0; T0CONbits.TMR0ON=1;
TMR1H=(65536-80)/256; while(!INTCONbits.TMR0IF);
TMR1L=(65536-80)%256; T0CONbits.TMR0ON=0;
T1CONbits.TMR1ON=1; INTCONbits.TMR0IF=0;
xung1=~xung1; T0CONbits.TMR0ON=1;
} while(!INTCONbits.TMR0IF);
void main(void) T0CONbits.TMR0ON=0;
{ INTCONbits.TMR0IF=0;
T1CON=0x80; xung=~xung;
INTCON=0xc0; }
T0CONbits.T08BIT=1; }
T0CONbits.PSA=1;

Câu 2.2: (4 điểm)

==================================================================================
46
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

- Vẽ sơ đồ mạch điện
mô phỏng như hình U?
2 15
bên. 3
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
16
RA1/AN1/C2IN- RC1/T1OSI/CCP2B
- Viết chương trình 4
5
RA2/AN2/C2IN+/VREF-/CVREF RC2/CCP1/P1A
17
18
tạo xung trên chân 6
RA3/AN3/C1IN+/VREF+
RA4/T0CKI/C1OUT
RC3/SCK/SCL
RC4/SDI/SDA
23
7 24
RD0 có tần số RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO

D
A

B
14 25
RA6/OSC2/CLKO RC6/TX/CK
F1 =2KHz sử dụng 13 26

KenhC

KenhD
RA7/OSC1/CLKI RC7/RX/DT
33 19 KenhC
Timer1; 34
RB0/AN12/FLT0/INT0 RD0/PSP0
20
-Tạo xung trên chân 35
RB1/AN10/INT1
RB2/AN8/INT2
RD1/PSP1
RD2/PSP2
21 KenhD
36 22
RD2 có tần số 37
RB3/AN9/CCP2A
RB4/KBI0/AN11
RD3/PSP3
RD4/PSP4
27
38 28
F2 =10KHz sử dụng 39
RB5/KBI1/PGM
RB6/KBI2/PGC
RD5/PSP5/P1B
RD6/PSP6/P1C
29
ngắt từ Timer0. 40
RB7/KBI3/PGD RD7/PSP7/P1D
30

- Cho biết bộ dao RE0/RD/AN5


8
9
động thạch anh có RE1/WR/AN6
RE2/CS/AN7
10
1
tần số FOSC =4MHz, RE3/MCLR/VPP

hoạt động ở chế độ PIC18F4520

HS.
================================================
#include<p18f4520.h> #pragma interrupt ngat_timer1
#include<stdio.h> void ngat_timer1(void)
#include<delays.h> {PIR1bits.TMR1IF=0;
#pragma config MCLRE=ON T1CONbits.TMR1ON=0;
#pragma config WDT=OFF TMR1H=(65536-250)/256;
#pragma config OSC=HS TMR1L=(65536-250)%256;
#define xung PORTDbits.RD0 T1CONbits.TMR1ON=1;
#define xung1 PORTDbits.RD2 xung1=~xung1;
void ngat_timer1(void); }
#pragma code ngat_thap=0x18 void main(void)
void ngat_thap(void) {
{ T1CON=0x80;
ngat_timer1(); INTCON=0xc0;
} T0CONbits.T08BIT=1;
#pragma code T0CONbits.PSA=1;
==================================================================================
47
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

T0CONbits.T0CS=0; {
TRISD=0X00; TMR0L=256-100+10;
PORTD=0x00; T0CONbits.TMR0ON=1;
ADCON1=0x0f; while(!INTCONbits.TMR0IF);
PIR1bits.TMR1IF=1; T0CONbits.TMR0ON=0;
PIE1bits.TMR1IE=1; INTCONbits.TMR0IF=0;;
IPR1bits.TMR1IP=1; xung=~xung;
xung=0; }
xung1=0; }
while(1)

Câu 2.3: (4 điểm)


-Vẽ sơ đồ mạch điện
mô phỏng như hình U?
2 15
bên. 3
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
16
RA1/AN1/C2IN- RC1/T1OSI/CCP2B
-Viết chương trình 4
5
RA2/AN2/C2IN+/VREF-/CVREF RC2/CCP1/P1A
17
18
tạo xung trên chân 6
RA3/AN3/C1IN+/VREF+
RA4/T0CKI/C1OUT
RC3/SCK/SCL
RC4/SDI/SDA
23
7 24
RD0 có tần số RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO

D
A

B
14 25
RA6/OSC2/CLKO RC6/TX/CK
13 26
F1 =2KHz sử dụng

KenhC

KenhD
RA7/OSC1/CLKI RC7/RX/DT
33 19 KenhC
Timer1; 34
RB0/AN12/FLT0/INT0 RD0/PSP0
20
RB1/AN10/INT1 RD1/PSP1
-Tạo xung trên chân 35
36
RB2/AN8/INT2 RD2/PSP2
21
22
KenhD

RD2 có tần số 37
RB3/AN9/CCP2A
RB4/KBI0/AN11
RD3/PSP3
RD4/PSP4
27
38 28
F2=10KHz sử dụng 39
RB5/KBI1/PGM
RB6/KBI2/PGC
RD5/PSP5/P1B
RD6/PSP6/P1C
29
40 30
ngắt từ Timer0. RB7/KBI3/PGD RD7/PSP7/P1D

- Cho biết bộ dao RE0/RD/AN5


8
9
RE1/WR/AN6
động thạch anh có RE2/CS/AN7
10
1
tần số FOSC= 8MHz, RE3/MCLR/VPP
PIC18F4520
hoạt động ở chế độ
HS.
=============================================
#include<p18f4520.h> #pragma config WDT=OFF
#include<stdio.h> #pragma config OSC=HS
#include<delays.h> #define xung PORTDbits.RD0
#pragma config MCLRE=ON #define xung1 PORTDbits.RD2
==================================================================================
48
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

void ngat_timer1(void); T0CONbits.PSA=1;


#pragma code ngat_thap=0x18 T0CONbits.T0CS=0;
void ngat_thap(void) TRISD=0X00;
{ PORTD=0x00;
ngat_timer1(); ADCON1=0x0f;
} PIR1bits.TMR1IF=1;
#pragma code PIE1bits.TMR1IE=1;
#pragma interrupt ngat_timer1 IPR1bits.TMR1IP=1;
void ngat_timer1(void) xung=0;
{PIR1bits.TMR1IF=0; xung1=0;
T1CONbits.TMR1ON=0; while(1)
TMR1H=(65536-500)/256; {
TMR1L=(65536-500)%256; TMR0L=256-100+10;
T1CONbits.TMR1ON=1; T0CONbits.TMR0ON=1;
xung1=~xung1; while(!INTCONbits.TMR0IF);
} T0CONbits.TMR0ON=0;
void main(void) INTCONbits.TMR0IF=0;
{ xung=~xung;
T1CON=0x80; }
INTCON=0xc0; }
T0CONbits.T08BIT=1;

Câu 2.4: (4 điểm)

==================================================================================
49
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

-Vẽ sơ đồ mạch điện


mô phỏng như hình U?
2 15
bên. 3
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
16
RA1/AN1/C2IN- RC1/T1OSI/CCP2B
- Viết chương trình 4
5
RA2/AN2/C2IN+/VREF-/CVREF RC2/CCP1/P1A
17
18
tạo xung trên chân 6
RA3/AN3/C1IN+/VREF+
RA4/T0CKI/C1OUT
RC3/SCK/SCL
RC4/SDI/SDA
23
7 24
RD0 có tần số RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO

D
A

B
14 25
RA6/OSC2/CLKO RC6/TX/CK
13 26
F1=2KHz sử dụng

KenhC

KenhD
RA7/OSC1/CLKI RC7/RX/DT
33 19 KenhC
Timer0; 34
RB0/AN12/FLT0/INT0 RD0/PSP0
20
RB1/AN10/INT1 RD1/PSP1
-Tạo xung trên chân 35
36
RB2/AN8/INT2 RD2/PSP2
21
22
KenhD

RD2 có tần số 37
RB3/AN9/CCP2A
RB4/KBI0/AN11
RD3/PSP3
RD4/PSP4
27
38 28
F2=10KHz sử dụng 39
RB5/KBI1/PGM
RB6/KBI2/PGC
RD5/PSP5/P1B
RD6/PSP6/P1C
29
40 30
ngắt từ Timer1. RB7/KBI3/PGD RD7/PSP7/P1D

-Cho biết bộ dao RE0/RD/AN5


8
9
RE1/WR/AN6
động thạch anh có RE2/CS/AN7
10
1
tần số FOSC=8MHz, RE3/MCLR/VPP
PIC18F4520
hoạt động ở chế độ
HS.
===============================================
#include<p18f4520.h> #pragma code
#include<stdio.h> #pragma interrupt ngat_timer1
#include<delays.h> void ngat_timer1(void)
#pragma config MCLRE=ON {PIR1bits.TMR1IF=0;
#pragma config WDT=OFF T1CONbits.TMR1ON=0;
#pragma config OSC=HS TMR1H=(65536-100)/256;
#define xung PORTDbits.RD0 TMR1L=(65536-100)%256;
#define xung1 PORTDbits.RD2 T1CONbits.TMR1ON=1;
void ngat_timer1(void); xung1=~xung1;
#pragma code ngat_thap=0x18 }
void ngat_thap(void) void main(void)
{ {
ngat_timer1(); T1CON=0x80;
} INTCON=0xc0;

==================================================================================
50
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

T0CONbits.T08BIT=1; TMR0L=256-250+20;
T0CONbits.PSA=1; T0CONbits.TMR0ON=1;
T0CONbits.T0CS=0; while(!INTCONbits.TMR0IF);
TRISD=0X00; T0CONbits.TMR0ON=0;
PORTD=0x00; INTCONbits.TMR0IF=0;
ADCON1=0x0f; T0CONbits.TMR0ON=1;
PIR1bits.TMR1IF=1; while(!INTCONbits.TMR0IF);
PIE1bits.TMR1IE=1; T0CONbits.TMR0ON=0;
IPR1bits.TMR1IP=1; INTCONbits.TMR0IF=0;
xung=0; xung=~xung;
xung1=0; }
while(1) }
{

Câu 2.5: (4 điểm)


-Vẽ sơ đồ mạch điện
mô phỏng như hình U?
2 15
bên. 3
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
16
RA1/AN1/C2IN- RC1/T1OSI/CCP2B
- Viết chương trình 4
5
RA2/AN2/C2IN+/VREF-/CVREF RC2/CCP1/P1A
17
18
tạo xung trên chân 6
RA3/AN3/C1IN+/VREF+
RA4/T0CKI/C1OUT
RC3/SCK/SCL
RC4/SDI/SDA
23
7 24
RD0 có tần số RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO

D
A

14 25 B
RA6/OSC2/CLKO RC6/TX/CK
F1 =4KHz sử dụng 13 26 KenhC

KenhD
RA7/OSC1/CLKI RC7/RX/DT
33 19 KenhC
Timer1; 34
RB0/AN12/FLT0/INT0 RD0/PSP0
20
RB1/AN10/INT1 RD1/PSP1
-Tạo xung trên chân 35
RB2/AN8/INT2 RD2/PSP2
21 KenhD
36 22
RD2 có tần số 37
RB3/AN9/CCP2A
RB4/KBI0/AN11
RD3/PSP3
RD4/PSP4
27
38 28
F2 =20KHz sử dụng 39
RB5/KBI1/PGM
RB6/KBI2/PGC
RD5/PSP5/P1B
RD6/PSP6/P1C
29
ngắt từ Timer0. 40
RB7/KBI3/PGD RD7/PSP7/P1D
30

- Cho biết bộ dao RE0/RD/AN5


8
9
động thạch anh có RE1/WR/AN6
RE2/CS/AN7
10
1
tần số RE3/MCLR/VPP

FOSC=16MHz, hoạt PIC18F4520

động ở chế độ HS.


===============================================
#include<p18f4520.h> #include<stdio.h>
==================================================================================
51
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

#include<delays.h> T1CON=0x80;
#pragma config MCLRE=ON INTCON=0xc0;
#pragma config WDT=OFF T0CONbits.T08BIT=1;
#pragma config OSC=HS T0CONbits.PSA=1;
#define xung PORTDbits.RD0 T0CONbits.T0CS=0;
#define xung1 PORTDbits.RD2 TRISD=0X00;
void ngat_timer1(void); PORTD=0x00;
#pragma code ngat_thap=0x18 ADCON1=0x0f;
void ngat_thap(void) PIR1bits.TMR1IF=1;
{ PIE1bits.TMR1IE=1;
ngat_timer1(); IPR1bits.TMR1IP=1;
} xung=0;
#pragma code xung1=0;
#pragma interrupt ngat_timer1 while(1)
void ngat_timer1(void) {
{PIR1bits.TMR1IF=0; TMR0L=256-100+10;
T1CONbits.TMR1ON=0; T0CONbits.TMR0ON=1;
TMR1H=(65536-500)/256; while(!INTCONbits.TMR0IF);
TMR1L=(65536-500)%256; T0CONbits.TMR0ON=0;
T1CONbits.TMR1ON=1; INTCONbits.TMR0IF=0;
xung1=~xung1; xung=~xung;
} }
void main(void) }
{

==================================================================================
52
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Câu 2.6: (4 điểm)


-Vẽ sơ đồ mạch U?
điện mô phỏng như 2
3
RA0/AN0/C1IN-
RA1/AN1/C2IN-
RC0/T1OSO/T13CKI
RC1/T1OSI/CCP2B
15
16 N2
KEY1
4 17 N1
hình bên. 5
RA2/AN2/C2IN+/VREF-/CVREF
RA3/AN3/C1IN+/VREF+
RC2/CCP1/P1A
RC3/SCK/SCL
18

-Viết chương trình N1 6


7
RA4/T0CKI/C1OUT
RA5/AN4/SS/HLVDIN/C2OUT
RC4/SDI/SDA
RC5/SDO
23
24
KEY2
dùng Timer0 chế độ 14
13
RA6/OSC2/CLKO
RA7/OSC1/CLKI
RC6/TX/CK
RC7/RX/DT
25
26
N2

16bit đếm số lần a 33


RB0/AN12/FLT0/INT0 RD0/PSP0
19
nhấn KEY1 b
c
34
35
RB1/AN10/INT1
RB2/AN8/INT2
RD1/PSP1
RD2/PSP2
20
21
- Và hiển thị chữ số d
e
36
37
RB3/AN9/CCP2A
RB4/KBI0/AN11
RD3/PSP3
RD4/PSP4
22
27
a
b

hàng đơn vị của số f


g
38
39
RB5/KBI1/PGM
RB6/KBI2/PGC
RD5/PSP5/P1B
RD6/PSP6/P1C
28
29
c
d

lần nhấn trên LED 7 40


RB7/KBI3/PGD RD7/PSP7/P1D
30 e
f

đoạn. Giả thiết số RE0/RD/AN5


RE1/WR/AN6
8
9
g

lần nhấn ≤65535. RE2/CS/AN7


10
1
RE3/MCLR/VPP
PIC18F4520

==============================================
#include<p18f4520.h> ADCON1=0X0F;
#include<stdio.h> T0CONbits.TMR0ON=1;
#include<delays.h> while(1)
#pragma config MCLRE=ON {
#pragma config WDT=OFF if(x>65535)
#pragma config OSC=HS {x=65535;}
char else
maled[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0
x82,0xf8,0x80,0x90}; donvi=x%10000%1000%100%10;

unsigned int x,donvi; x=TMR0L+TMR0H*256;

void main() PORTB=maled[donvi];

{ }

TRISA=0Xff; }

TRISB=0X00;

==================================================================================
53
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Câu 2.7: (4 điểm)


-Vẽ sơ đồ mạch U?
điện mô phỏng như 2
3
RA0/AN0/C1IN-
RA1/AN1/C2IN-
RC0/T1OSO/T13CKI
RC1/T1OSI/CCP2B
15
16 N2
KEY1
4 17 N1
hình bên. 5
RA2/AN2/C2IN+/VREF-/CVREF
RA3/AN3/C1IN+/VREF+
RC2/CCP1/P1A
RC3/SCK/SCL
18

-Viết chương trình N1 6


7
RA4/T0CKI/C1OUT
RA5/AN4/SS/HLVDIN/C2OUT
RC4/SDI/SDA
RC5/SDO
23
24
KEY2
dùng Timer1 chế độ 14
13
RA6/OSC2/CLKO
RA7/OSC1/CLKI
RC6/TX/CK
RC7/RX/DT
25
26
N2

16bit đếm số lần a 33


RB0/AN12/FLT0/INT0 RD0/PSP0
19
nhấn KEY2 b
c
34
35
RB1/AN10/INT1
RB2/AN8/INT2
RD1/PSP1
RD2/PSP2
20
21
-Và hiển thị chữ số d
e
36
37
RB3/AN9/CCP2A
RB4/KBI0/AN11
RD3/PSP3
RD4/PSP4
22
27
a
b

hàng đơn vị của số f


g
38
39
RB5/KBI1/PGM
RB6/KBI2/PGC
RD5/PSP5/P1B
RD6/PSP6/P1C
28
29
c
d

lần nhấn trên LED 7 40


RB7/KBI3/PGD RD7/PSP7/P1D
30 e
f

đoạn. Giả thiết số RE0/RD/AN5


RE1/WR/AN6
8
9
g

lần nhấn ≤65535. RE2/CS/AN7


10
1
RE3/MCLR/VPP
PIC18F4520

===============================================
#include<p18f4520.h> ADCON1=0X0F;
#include<stdio.h> T1CON=0b10000111;
#include<delays.h> while(1)
#pragma config MCLRE=ON {
#pragma config WDT=OFF if(x>65535)
#pragma config OSC=HS {x=65535;}
char else
maled[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0
x82,0xf8,0x80,0x90}; x=TMR1L+TMR1H*256;

unsigned int x,donvi; donvi=x%10000%1000%100%10;

void main() PORTB=maled[donvi];

{ }

TRISC=0Xff; }

TRISB=0X00;

==================================================================================
54
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Câu 2.8: (4 điểm)


-Vẽ sơ đồ mạch U?
điện mô phỏng như 2
3
RA0/AN0/C1IN-
RA1/AN1/C2IN-
RC0/T1OSO/T13CKI
RC1/T1OSI/CCP2B
15
16 N2
KEY1
4 17 N1
hình bên. 5
RA2/AN2/C2IN+/VREF-/CVREF
RA3/AN3/C1IN+/VREF+
RC2/CCP1/P1A
RC3/SCK/SCL
18

-Viết chương trình N1 6


7
RA4/T0CKI/C1OUT
RA5/AN4/SS/HLVDIN/C2OUT
RC4/SDI/SDA
RC5/SDO
23
24
KEY2
dùng Timer0 chế độ 14
13
RA6/OSC2/CLKO
RA7/OSC1/CLKI
RC6/TX/CK
RC7/RX/DT
25
26
N2

8bit đếm số lần a 33


RB0/AN12/FLT0/INT0 RD0/PSP0
19
nhấn KEY1 b
c
34
35
RB1/AN10/INT1
RB2/AN8/INT2
RD1/PSP1
RD2/PSP2
20
21
-Và hiển thị chữ số d
e
36
37
RB3/AN9/CCP2A
RB4/KBI0/AN11
RD3/PSP3
RD4/PSP4
22
27
a
b

hàng đơn vị của số f


g
38
39
RB5/KBI1/PGM
RB6/KBI2/PGC
RD5/PSP5/P1B
RD6/PSP6/P1C
28
29
c
d

lần nhấn trên LED 7 40


RB7/KBI3/PGD RD7/PSP7/P1D
30 e
f

đoạn. Giả thiết số RE0/RD/AN5


RE1/WR/AN6
8
9
g

lần nhấn ≤255. RE2/CS/AN7


10
1
RE3/MCLR/VPP
PIC18F4520

============================================
#include<p18f4520.h> ADCON1=0X0F;
#include<stdio.h> T0CONbits.T08BIT=1;
#include<delays.h> T0CONbits.PSA=1;
#pragma config MCLRE=ON while(1)
#pragma config WDT=OFF {
#pragma config OSC=HS if(x>255)
char {x=255;}
maled[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0
x82,0xf8,0x80,0x90}; else

unsigned int x,donvi; x=TMR0L+TMR0H*256;

void main() donvi=x%100%10;

{ PORTB=maled[donvi];

TRISA=0Xff; }

TRISB=0X00; }

==================================================================================
55
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Câu 2.9: (4 điểm)


-Vẽ sơ đồ mạch U?
điện mô phỏng như 2
3
RA0/AN0/C1IN-
RA1/AN1/C2IN-
RC0/T1OSO/T13CKI
RC1/T1OSI/CCP2B
15
16 N2
KEY1
4 17 N1
hình bên. 5
RA2/AN2/C2IN+/VREF-/CVREF
RA3/AN3/C1IN+/VREF+
RC2/CCP1/P1A
RC3/SCK/SCL
18

-Viết chương trình N1 6


7
RA4/T0CKI/C1OUT
RA5/AN4/SS/HLVDIN/C2OUT
RC4/SDI/SDA
RC5/SDO
23
24
KEY2
dùng Timer1 chế độ 14
13
RA6/OSC2/CLKO
RA7/OSC1/CLKI
RC6/TX/CK
RC7/RX/DT
25
26
N2

8bit đếm số lần a 33


RB0/AN12/FLT0/INT0 RD0/PSP0
19
nhấn KEY2 b
c
34
35
RB1/AN10/INT1
RB2/AN8/INT2
RD1/PSP1
RD2/PSP2
20
21
-Và hiển thị chữ số d
e
36
37
RB3/AN9/CCP2A
RB4/KBI0/AN11
RD3/PSP3
RD4/PSP4
22
27
a
b

hàng đơn vị của số f


g
38
39
RB5/KBI1/PGM
RB6/KBI2/PGC
RD5/PSP5/P1B
RD6/PSP6/P1C
28
29
c
d

lần nhấn trên LED 7 40


RB7/KBI3/PGD RD7/PSP7/P1D
30 e
f

đoạn. Giả thiết số RE0/RD/AN5


RE1/WR/AN6
8
9
g

lần nhấn ≤255. RE2/CS/AN7


10
1
RE3/MCLR/VPP
PIC18F4520

==============================================
#include<p18f4520.h> TRISB=0X00;
#include<stdio.h> ADCON1=0X0F;;
#include<delays.h> T1CONbits.TMR1ON=1;
#pragma config MCLRE=ON while(1)
#pragma config WDT=OFF {
#pragma config OSC=HS if(x>255)
char {x=255;}
maled[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0
x82,0xf8,0x80,0x90}; else

unsigned int x,donvi; x=TMR1L+TMR1H*256;

void main() donvi=x%100%10;

{ PORTB=maled[donvi];

T1CON=0b00000110; }

TRISC=0Xff; }

=====================================================================

==================================================================================
56
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Câu 2.10: (4 điểm)


-Vẽ sơ đồ mạch
U?
điện mô phỏng như 2 15
RA0/AN0/C1IN- RC0/T1OSO/T13CKI KEY1
hình bên. 3
4
RA1/AN1/C2IN- RC1/T1OSI/CCP2B
16
17
N2
N1
-Viết chương trình 5
RA2/AN2/C2IN+/VREF-/CVREF
RA3/AN3/C1IN+/VREF+
RC2/CCP1/P1A
RC3/SCK/SCL
18
N1 6 23
dùng Timer1 chế độ 7
RA4/T0CKI/C1OUT
RA5/AN4/SS/HLVDIN/C2OUT
RC4/SDI/SDA
RC5/SDO
24
KEY2
N2
16bit đếm số lần 14
13
RA6/OSC2/CLKO
RA7/OSC1/CLKI
RC6/TX/CK
RC7/RX/DT
25
26
nhấn KEY2 33 19
RB0/AN12/FLT0/INT0 RD0/PSP0
- Và hiển thị 8bit 34
35
RB1/AN10/INT1 RD1/PSP1
20
21
thấp của số lần nhấn
RB2/AN8/INT2 RD2/PSP2
36 22
RB3/AN9/CCP2A RD3/PSP3
37 27
dưới dạng số nhị 38
RB4/KBI0/AN11
RB5/KBI1/PGM
RD4/PSP4
RD5/PSP5/P1B
28
39 29
phân trên PORTD, 40
RB6/KBI2/PGC
RB7/KBI3/PGD
RD6/PSP6/P1C
RD7/PSP7/P1D
30

hiển thị 8bit cao của RE0/RD/AN5


8
số lần nhấn trên RE1/WR/AN6
9
10
RE2/CS/AN7
PORTB. Giả thiết RE3/MCLR/VPP
1

số lần nhấn ≤65535. PIC18F4520

================================================
#include<p18f4520.h> T1CON=0b10000110;
#include<stdio.h> T1CONbits.TMR1ON=1;
#include<delays.h> while(1)
#pragma config MCLRE=ON {
#pragma config WDT=OFF if(x>65535)
#pragma config OSC=HS {x=65535;}
unsigned int x; else
void main() x=TMR1L+TMR1H*256;
{ PORTD=TMR1L;
TRISC=0xff; PORTB=TMR1H;
TRISB=0x00; }
TRISD=0x00; }
ADCON1=0x0f;

==================================================================================
57
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Câu 2.11: (4 điểm)


- Vẽ sơ đồ mạch U?
KEY1
điện mô phỏng như
D1 2 15
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
D2 3 16 N1
RA1/AN1/C2IN- RC1/T1OSI/CCP2B
D3 4 17
hình bên. 5
RA2/AN2/C2IN+/VREF-/CVREF
RA3/AN3/C1IN+/VREF+
RC2/CCP1/P1A
RC3/SCK/SCL
18
KEY2
6 23
- Sử dụng ngắt 7
RA4/T0CKI/C1OUT
RA5/AN4/SS/HLVDIN/C2OUT
RC4/SDI/SDA
RC5/SDO
24 N2
14 25
RA6/OSC2/CLKO RC6/TX/CK
ngoài INT1, INT2 13
RA7/OSC1/CLKI RC7/RX/DT
26
KEY3
viết chương trình N1
N2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20
N3

điều khiển theo yêu N3 35


36
RB1/AN10/INT1
RB2/AN8/INT2
RD1/PSP1
RD2/PSP2
21
22
cầu:
RB3/AN9/CCP2A RD3/PSP3
37 27
RB4/KBI0/AN11 RD4/PSP4

D1

D2

D3
38 28
RB5/KBI1/PGM RD5/PSP5/P1B
+ Khi nhấn KEY2, 39
40
RB6/KBI2/PGC RD6/PSP6/P1C
29
30 LED1 LED2 LED3
RB7/KBI3/PGD RD7/PSP7/P1D
LED2 nhấp nháy 10 RE0/RD/AN5
8

lần; RE1/WR/AN6
RE2/CS/AN7
9
10

+ Khi nhấn KEY 3 RE3/MCLR/VPP


1

LED3 nhấp nháy 5 PIC18F4520

lần.
Yêu cầu: Thiết lập
ngắt ngoài INT1 ở
mức ưu tiên cao
hơn ngắt ngoài
INT2.

=============================================
#include<p18f4520.h> INT1();
#include<delays.h> }
#pragma config #pragma code
OSC=HS,WDT=OFF,MCLRE=ON
#pragma interrupt INT1
#define led2 PORTAbits.RA1
void INT1(void)
#define led3 PORTAbits.RA2
{
void INT1(void);
int i;
void INT2(void);
if(INTCON3bits.INT1IF==1)
#pragma code ngat_cao=0x08
INTCON3bits.INT1IF=0;
void interrupt_ngat_cao(void)
for(i=0;i<10;i++)
{
==================================================================================
58
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

{ {
led2=1; led3=1;
Delay10KTCYx(50); Delay10KTCYx(50);
led2=0; led3=0;
Delay10KTCYx(50); Delay10KTCYx(50);
} }
} }
#pragma code ngat_thap=0x18 void main(void)
void interrupt_ngat_thap(void) {
{ ADCON1=0x0f;
INT2(); TRISA=0x00;
} TRISB=0xff;
#pragma code RCONbits.IPEN=1;
#pragma interrupt INT2 INTCON=0xc0;
void INT2(void) INTCON3bits.INT1IE=1;
{ INTCON3bits.INT2IE=1;
int j; INTCON3bits.INT1IP=1;
if(INTCON3bits.INT2IF==1) INTCON3bits.INT2IP=0;
INTCON3bits.INT2IF=0; while(1);
for(j=0;j<5;j++) }

==================================================================================
59
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Câu 2.12: (4 điểm)


- Vẽ sơ đồ mạch U?
KEY1
điện mô phỏng như
D1 2 15
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
D2 3 16 N1
RA1/AN1/C2IN- RC1/T1OSI/CCP2B
D3 4 17
hình bên. 5
RA2/AN2/C2IN+/VREF-/CVREF
RA3/AN3/C1IN+/VREF+
RC2/CCP1/P1A
RC3/SCK/SCL
18
KEY2
6 23
- Sử dụng ngắt 7
RA4/T0CKI/C1OUT
RA5/AN4/SS/HLVDIN/C2OUT
RC4/SDI/SDA
RC5/SDO
24 N2
14 25
RA6/OSC2/CLKO RC6/TX/CK
ngoài INT0, INT2 13
RA7/OSC1/CLKI RC7/RX/DT
26
KEY3
viết chương trình N1
N2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20
N3

điều khiển theo yêu N3 35


36
RB1/AN10/INT1
RB2/AN8/INT2
RD1/PSP1
RD2/PSP2
21
22
cầu:
RB3/AN9/CCP2A RD3/PSP3
37 27
RB4/KBI0/AN11 RD4/PSP4

D1

D2

D3
38 28
RB5/KBI1/PGM RD5/PSP5/P1B
+ Khi nhấn KEY2, 39
40
RB6/KBI2/PGC RD6/PSP6/P1C
29
30 LED1 LED2 LED3
RB7/KBI3/PGD RD7/PSP7/P1D
LED2 nhấp nháy 10 RE0/RD/AN5
8

lần; RE1/WR/AN6
RE2/CS/AN7
9
10

+ Khi nhấn KEY1, RE3/MCLR/VPP


1

LED1 nhấp nháy 5 PIC18F4520

lần.
Yêu cầu: Thiết lập
ngắt ngoài INT0 ở
mức ưu tiên cao
hơn ngắt ngoài
INT2.
================================================
#include<p18f4520.h> }
#include<delays.h> #pragma code
#pragma config #pragma interrupt INT0
OSC=HS,WDT=OFF,MCLRE=ON
void INT0(void)
#define led1 PORTAbits.RA0
{
#define led2 PORTAbits.RA1
int i;
void INT0(void);
if(INTCONbits.INT0IF==1)
void INT2(void);
INTCONbits.INT0IF=0;
#pragma code ngat_cao=0x08
for(i=0;i<5;i++)
{
void interrupt_ngat_cao(void)
led1=1;
{
Delay10KTCYx(50);
INT0();
==================================================================================
60
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

led1=0; led2=1;
Delay10KTCYx(50); Delay10KTCYx(50);
} led2=0;
} Delay10KTCYx(50);
#pragma code ngat_thap=0x18 }
void interrupt_ngat_thap(void) }
{ void main(void)
INT2(); {
} ADCON1=0x0f;
#pragma code TRISA=0x00;
#pragma interrupt INT2 TRISB=0xff;
void INT2(void) RCONbits.IPEN=1;
{ INTCON=0xc0;
int j; INTCONbits.INT0IE=1;
if(INTCON3bits.INT2IF==1) INTCON3bits.INT2IE=1;
INTCON3bits.INT2IF=0; INTCON3bits.INT2IP=0;
for(j=0;j<10;j++) while(1);
{ }

==================================================================================
61
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Câu 2.13: (4 điểm)


-Vẽ sơ đồ mạch U?
KEY1
điện mô phỏng như
D1 2 15
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
D2 3 16 N1
RA1/AN1/C2IN- RC1/T1OSI/CCP2B
D3 4 17
hình bên. 5
RA2/AN2/C2IN+/VREF-/CVREF
RA3/AN3/C1IN+/VREF+
RC2/CCP1/P1A
RC3/SCK/SCL
18
KEY2
6 23
-Sử dụng ngắt ngoài 7
RA4/T0CKI/C1OUT
RA5/AN4/SS/HLVDIN/C2OUT
RC4/SDI/SDA
RC5/SDO
24 N2
14 25
INT0, INT1 viết 13
RA6/OSC2/CLKO
RA7/OSC1/CLKI
RC6/TX/CK
RC7/RX/DT
26
KEY3
chương trình điều N1
N2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20
N3

khiển theo yêu cầu: N3 35


36
RB1/AN10/INT1
RB2/AN8/INT2
RD1/PSP1
RD2/PSP2
21
22
+Khi nhấn KEY1,
RB3/AN9/CCP2A RD3/PSP3
37 27
RB4/KBI0/AN11 RD4/PSP4

D1

D2

D3
38 28
RB5/KBI1/PGM RD5/PSP5/P1B
LED1 nhấp nháy 10 39
40
RB6/KBI2/PGC RD6/PSP6/P1C
29
30 LED1 LED2 LED3
RB7/KBI3/PGD RD7/PSP7/P1D
lần; RE0/RD/AN5
8

+Khi nhấn KEY2, RE1/WR/AN6


RE2/CS/AN7
9
10

LED2 nhấp nháy 5 RE3/MCLR/VPP


1

lần. PIC18F4520

Yêu cầu: Thiết lập


ngắt ngoài INT0 ở
mức ưu tiên cao
hơn ngắt ngoài
INT1.
=================================================
#include<p18f4520.h> #pragma code
#include<delays.h> #pragma interrupt INT0
#pragma config void INT0(void)
OSC=HS,WDT=OFF,MCLRE=ON
{
#define led1 PORTAbits.RA0
int i;
#define led2 PORTAbits.RA1
if(INTCONbits.INT0IF==1)
void INT0(void);
INTCONbits.INT0IF=0;
void INT1(void);
for(i=0;i<10;i++)
#pragma code ngat_cao=0x08
{
void interrupt_ngat_cao(void)
led1=1;
{
Delay10KTCYx(50);
INT0();
led1=0;
}
Delay10KTCYx(50);

==================================================================================
62
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

} Delay10KTCYx(50);
} led2=0;
#pragma code ngat_thap=0x18 Delay10KTCYx(50);
void interrupt_ngat_thap(void) }
{ }
INT1(); void main(void)
} {
#pragma code ADCON1=0x0f;
#pragma interrupt INT1 TRISA=0x00;
void INT1(void) TRISB=0xff;
{ RCONbits.IPEN=1;
int j; INTCON=0xd0;
if(INTCON3bits.INT1IF==1) INTCON3bits.INT1IE=1;
INTCON3bits.INT1IF=0; INTCON3bits.INT1IP=0;
for(j=0;j<5;j++) while(1);
{ }
led2=1;

Câu 2.14: (4 điểm)


-Vẽ sơ đồ mạch U?
KEY1
điện mô phỏng như
D1 2 15
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
D2 3 16 N1
RA1/AN1/C2IN- RC1/T1OSI/CCP2B
D3 4 17
hình bên. 5
RA2/AN2/C2IN+/VREF-/CVREF
RA3/AN3/C1IN+/VREF+
RC2/CCP1/P1A
RC3/SCK/SCL
18
KEY2
6 23
-Sử dụng ngắt ngoài 7
RA4/T0CKI/C1OUT
RA5/AN4/SS/HLVDIN/C2OUT
RC4/SDI/SDA
RC5/SDO
24 N2
14 25
INT0, INT1 viết 13
RA6/OSC2/CLKO
RA7/OSC1/CLKI
RC6/TX/CK
RC7/RX/DT
26
KEY3
chương trình điều N1
N2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20
N3

khiển theo yêu cầu: N3 35


36
RB1/AN10/INT1
RB2/AN8/INT2
RD1/PSP1
RD2/PSP2
21
22
+Khi nhấn KEY1,
RB3/AN9/CCP2A RD3/PSP3
37 27
RB4/KBI0/AN11 RD4/PSP4
D1

D2

D3

38 28
RB5/KBI1/PGM RD5/PSP5/P1B
LED1 nhấp nháy 10 39
40
RB6/KBI2/PGC RD6/PSP6/P1C
29
30 LED1 LED2 LED3
RB7/KBI3/PGD RD7/PSP7/P1D
lần; RE0/RD/AN5
8

+Khi nhấn KEY2, RE1/WR/AN6


RE2/CS/AN7
9
10
1
LED2 và LED3 RE3/MCLR/VPP

nhấp nháy 5 lần. PIC18F4520

==================================================================================
63
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Yêu cầu: Thiết lập


ngắt ngoài INT0 ở
mức ưu tiên cao
hơn ngắt ngoài
INT1.
===============================================
#include<p18f4520.h> led1=1;
#include<delays.h> Delay10KTCYx(50);
#pragma config led1=0;
OSC=HS,WDT=OFF,MCLRE=ON
Delay10KTCYx(50);
#define led1 PORTAbits.RA0
}
#define led2 PORTAbits.RA1
}
#define led3 PORTAbits.RA2
#pragma code ngat_thap=0x18
void INT0(void);
void interrupt_ngat_thap(void)
void INT1(void);
{
#pragma code ngat_cao=0x08
INT1();
void interrupt_ngat_cao(void)
}
{
#pragma code
INT0();
#pragma interrupt INT1
}
void INT1(void)
#pragma code
{
#pragma interrupt INT0
int j;
void INT0(void)
if(INTCON3bits.INT1IF==1)
{
INTCON3bits.INT1IF=0;
int i;
for(j=0;j<5;j++)
if(INTCONbits.INT0IF==1)
{
INTCONbits.INT0IF=0;
led2=1;
for(i=0;i<10;i++)
led3=1;
{
Delay10KTCYx(50);
==================================================================================
64
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

led2=0; TRISA=0x00;
led3=0; TRISB=0xff;
Delay10KTCYx(50); RCONbits.IPEN=1;
} INTCON=0xd0;
} INTCON3bits.INT1IE=1;
void main(void) INTCON3bits.INT1IP=0;
{ while(1);
ADCON1=0x0f; }

Câu 2.15: (4 điểm)


-Vẽ sơ đồ mạch U?
KEY1
điện mô phỏng như
D1 2 15
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
D2 3 16 N1
RA1/AN1/C2IN- RC1/T1OSI/CCP2B
D3 4 17
hình bên. 5
RA2/AN2/C2IN+/VREF-/CVREF
RA3/AN3/C1IN+/VREF+
RC2/CCP1/P1A
RC3/SCK/SCL
18
KEY2
6 23
-Sử dụng ngắt ngoài 7
RA4/T0CKI/C1OUT
RA5/AN4/SS/HLVDIN/C2OUT
RC4/SDI/SDA
RC5/SDO
24 N2
14 25
INT0, INT2 viết 13
RA6/OSC2/CLKO
RA7/OSC1/CLKI
RC6/TX/CK
RC7/RX/DT
26
KEY3
chương trình điều N1
N2
33
34
RB0/AN12/FLT0/INT0 RD0/PSP0
19
20
N3

khiển theo yêu cầu: N3 35


36
RB1/AN10/INT1
RB2/AN8/INT2
RD1/PSP1
RD2/PSP2
21
22
+Khi nhấn KEY1,
RB3/AN9/CCP2A RD3/PSP3
37 27
RB4/KBI0/AN11 RD4/PSP4

D1

D2

D3
38 28
RB5/KBI1/PGM RD5/PSP5/P1B
LED1 nhấp nháy 10 39
40
RB6/KBI2/PGC RD6/PSP6/P1C
29
30 LED1 LED2 LED3
RB7/KBI3/PGD RD7/PSP7/P1D
lần; RE0/RD/AN5
8

+Khi nhấn KEY3, RE1/WR/AN6


RE2/CS/AN7
9
10
1
LED2 và LED3 RE3/MCLR/VPP

nhấp nháy 5 lần. PIC18F4520

Yêu cầu: Thiết lập


ngắt ngoài INT0 ở
mức ưu tiên cao
hơn ngắt ngoài
INT2.

============================================
#include<p18f4520.h> #pragma config
OSC=HS,WDT=OFF,MCLRE=ON
#include<delays.h>
#define led1 PORTAbits.RA0

==================================================================================
65
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

#define led2 PORTAbits.RA1 INT2();


#define led3 PORTAbits.RA2 }
void INT0(void); #pragma code
void INT2(void); #pragma interrupt INT2
#pragma code ngat_cao=0x08 void INT2(void)
void interrupt_ngat_cao(void) {
{ int j;
INT0(); if(INTCON3bits.INT2IF==1)
} INTCON3bits.INT2IF=0;
#pragma code for(j=0;j<5;j++)
#pragma interrupt INT0 {
void INT0(void) led2=1;
{ led3=1;
int i; Delay10KTCYx(50);
if(INTCONbits.INT0IF==1) led2=0;
INTCONbits.INT0IF=0; led3=0;
for(i=0;i<10;i++) Delay10KTCYx(50);
{ }
led1=1; }
Delay10KTCYx(50); void main(void)
led1=0; {
Delay10KTCYx(50); ADCON1=0x0f;
} TRISA=0x00;
} TRISB=0xff;
#pragma code ngat_thap=0x18 RCONbits.IPEN=1;
void interrupt_ngat_thap(void) INTCON=0xd0;
{ INTCON3bits.INT2IE=1;

==================================================================================
66
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

INTCON3bits.INT2IP=0; }
while(1);

Câu 2.16: (4 điểm)


Vẽ sơ đồ mạch điện mô
phỏng như hình bên.
- Lập trình tạo 1 xung PWM
có tần số 20KHz trên chân
CCP1. Khi bắt đầu bật nguồn
xung PWM có độ rộng TON =
TOFF , sau 2 giây TON =
1/3.TOFF .
- Thạch anh hệ thống 8 MHz,
bộ phát xung được cấu hình ở
chế độ HS.
- Thực hiện đo và kiểm tra tần
số và độ rộng xung.

==============================================
#include<p18f4520.h> TRISC=0x00;
#include<stdio.h> OpenPWM1(99); // tao xung co t=50us
#include<delays.h> SetDCPWM1(200); // xung co do rong xung
=50%
#include<pwm.h>
Delay10KTCYx(200);//tre 2s
#pragma config
OSC=HS,MCLRE=ON,WDT=OFF SetDCPWM1(100);// xung co do rong
xung=25%
void main(void)
while(1);
{
}

==================================================================================
67
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Câu 2.17: (4 điểm)


Vẽ sơ đồ mạch điện mô
phỏng như hình bên.
- Lập trình tạo 1 xung PWM
có tần số 20KHz trên chân
CCP1. Khi bắt đầu bật nguồn
xung PWM có độ rộng TON =
TOFF , sau 2 giây TON = 3TOFF
.
- Thạch anh hệ thống 8 MHz,
bộ phát xung được cấu hình ở
chế độ HS.
- Thực hiện đo và kiểm tra tần
số và độ rộng xung.

=============================================
#include<p18f4520.h> OpenPWM1(99); // tao xung co t=50us
#include<stdio.h> SetDCPWM1(200); // xung co do rong xung
=50%
#include<delays.h>
Delay10KTCYx(200);//tre 2s
#include<pwm.h>
SetDCPWM1(300);// xung co do rong
#pragma config xung=75%
OSC=HS,MCLRE=ON,WDT=OFF
while(1);
void main(void)
}
{
TRISC=0X00;

==================================================================================
68
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Câu 2.18: (4 điểm)


Vẽ sơ đồ mạch điện mô
phỏng như hình bên.
- Lập trình tạo 1 xung PWM
có tần số 1KHz trên chân
CCP2A. Khi bắt đầu bật
nguồn xung PWM có độ rộng
TON = TOFF , sau 2 giây TON =
1/4.TOFF .
- Thạch anh hệ thống 8 MHz,
bộ phát xung được cấu hình ở
chế độ HS.
- Thực hiện đo và kiểm tra tần
số và độ rộng xung.

================================================
#include<p18f4520.h> ADCON1=0x0f;
#include<stdio.h> T2CONbits.T2CKPS1=1;
#include<delays.h> T2CONbits.T2CKPS0=1;//he so chia =16
#include<pwm.h> OpenPWM2(124); // tao xung co t=1ms
#pragma config SetDCPWM2(250); // xung co do rong xung
OSC=HS,MCLRE=ON,WDT=OFF =50%
#pragma config CCP2MX=PORTBE Delay10KTCYx(200);
void main(void) SetDCPWM2(100);// xung co do rong
xung=20%
{
while(1);
TRISB=0x00;
}

==================================================================================
69
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Câu 2.19: (4 điểm)


Vẽ sơ đồ mạch điện mô
phỏng như hình bên.
- Lập trình tạo 1 xung PWM
có tần số 1KHz trên chân
CCP2A. Khi bắt đầu bật
nguồn xung PWM có độ rộng
TON = TOFF , sau 5 giây TON =
4.TOFF .
- Thạch anh hệ thống 8 MHz,
bộ phát xung được cấu hình ở
chế độ HS.
- Thực hiện đo và kiểm tra tần
số và độ rộng xung.

==============================================
#include<p18f4520.h> T2CONbits.T2CKPS1=1;
#include<stdio.h> T2CONbits.T2CKPS0=1;//he so chia =16
#include<delays.h> OpenPWM2(124); // tao xung co t=1ms
#include<pwm.h> SetDCPWM2(250); // xung co do rong xung
=50%
#pragma config
OSC=HS,MCLRE=ON,WDT=OFF Delay10KTCYx(500);;//tre 5s/Ang' chung\
thoi nhe :D
#pragma config CCP2MX=PORTBE
SetDCPWM2(400);// xung co do rong
void main(void) xung=80%
{ while(1);
ADCON1=0x0f; }
TRISB=0x00;

==================================================================================
70
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Câu 2.20: (4 điểm)


Vẽ sơ đồ mạch điện mô
phỏng như hình bên.
- Lập trình tạo 1 xung PWM
có tần số 1KHz trên chân
CCP2B. Khi bắt đầu bật
nguồn xung PWM có độ rộng
TON = TOFF , sau 5 giây TON =
2/3 * TOFF .
- Thạch anh hệ thống 8 MHz,
bộ phát xung được cấu hình ở
chế độ HS.
- Thực hiện đo và kiểm tra tần
số và độ rộng xung.
==================================================
#include<p18f4520.h> T2CONbits.T2CKPS1=1;
#include<stdio.h> T2CONbits.T2CKPS0=1;//he so chia =16
#include<delays.h> OpenPWM2(124); // tao xung co t=1ms
#include<pwm.h> SetDCPWM2(250); // xung co do rong xung
=50%
#pragma config
OSC=HS,MCLRE=ON,WDT=OFF Delay10KTCYx(500);//tre 5s
void main(void) SetDCPWM2(150);// xung co do rong
xung=1/3
{
while(1);
ADCON1=0x0f;
}
TRISC=0x00;
Câu 2.21: (4 điểm)
Vẽ sơ đồ mạch điện
mô phỏng như hình
bên. Viết chương
trình biến đổi điện áp
tương tự trên AN0
thành tín hiệu số.
Hiển thị giá trị biến
đổi được dưới dạng
số nhị phân trên
==================================================================================
71
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

PORTD, PORTB, U?
như sau: RV?
2
3
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15
16
Bit D0÷D7 hiển thị 4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
17
5 18
trên RB0÷RB7; bit 6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
23

48%
RA4/T0CKI/C1OUT RC4/SDI/SDA
D8,D9 hiển thị trên 7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
RA6/OSC2/CLKO RC6/TX/CK
RD0,RD1. 10k 13
RA7/OSC1/CLKI RC7/RX/DT
26

33 19
RB0/AN12/FLT0/INT0 RD0/PSP0
34
RB1/AN10/INT1 RD1/PSP1
20 R?
35 21 10k
RB2/AN8/INT2 RD2/PSP2
36 22
RB3/AN9/CCP2A RD3/PSP3
37 27
RB4/KBI0/AN11 RD4/PSP4
38 28
RB5/KBI1/PGM RD5/PSP5/P1B
39 29
RB6/KBI2/PGC RD6/PSP6/P1C
40 30
RB7/KBI3/PGD RD7/PSP7/P1D

RE0/RD/AN5
8 C1
9
RE1/WR/AN6
10
RE2/CS/AN7
1
RE3/MCLR/VPP
PIC18F4520
CLOCK=8MHz

============================================

#include<p18f4520.h> ADC_INT_OFF&
#include<delays.h> ADC_VREFPLUS_VDD &
#include<stdio.h> ADC_VREFMINUS_VSS,13);
#include<adc.h> Delay10TCYx( 5 ); // Delay for
50TCY
#define DATA PORTA
ConvertADC(); // Start conversion
void ADC0();
while( BusyADC() ); // Wait for
unsigned int AD0; completion
void ADC0() AD0 = ReadADC(); // Read result
{ CloseADC(); // Disable A/D
converter
OpenADC( ADC_FOSC_32 &
}
ADC_RIGHT_JUST &
void main(void)
ADC_12_TAD,
{
ADC_CH0 &

==================================================================================
72
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

TRISB=0x00; ADC0();
TRISD=0x00; PORTD=AD0;
TRISA=0xff; PORTB=AD0>>8;
ADCON1=0x0f; }
while(1) }
{

Câu 2.22: (4 điểm)


Vẽ sơ đồ mạch điện
mô phỏng như hình U?
bên. Viết chương RV?
2
3
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15
16
trình biến đổi điện áp 4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
17
5 18
tương tự trên AN1 6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
23
48%

RA4/T0CKI/C1OUT RC4/SDI/SDA
thành tín hiệu số. 7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
Hiển thị giá trị biến 10k 13
RA6/OSC2/CLKO
RA7/OSC1/CLKI
RC6/TX/CK
RC7/RX/DT
26

đổi được dưới dạng 33 19


RB0/AN12/FLT0/INT0 RD0/PSP0
số nhị phân trên 34
35
RB1/AN10/INT1 RD1/PSP1
20
21
R?
RB2/AN8/INT2 RD2/PSP2 10k
PORTD, PORTB, 36
RB3/AN9/CCP2A RD3/PSP3
22
37 27
như sau: 38
RB4/KBI0/AN11
RB5/KBI1/PGM
RD4/PSP4
RD5/PSP5/P1B
28
Bit D0÷D7 hiển thị 39
40
RB6/KBI2/PGC RD6/PSP6/P1C
29
30
RB7/KBI3/PGD RD7/PSP7/P1D
trên RB0÷RB7; bit
D8,D9 hiển thị trên RE0/RD/AN5
8 C1
9
RE1/WR/AN6
10
RD0,RD1. RE2/CS/AN7
1
RE3/MCLR/VPP
PIC18F4520
CLOCK=8MHz
=============================================
#include<p18f4520.h> {
#include<delays.h> OpenADC( ADC_FOSC_32 &
#include<stdio.h> ADC_RIGHT_JUST &
#include<adc.h> ADC_12_TAD,
#define DATA PORTA ADC_CH1 &
void ADC0(); ADC_INT_OFF&
unsigned int AD0; ADC_VREFPLUS_VDD &
void ADC0() ADC_VREFMINUS_VSS,13);

==================================================================================
73
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Delay10TCYx( 5 ); // Delay for TRISD=0x00;


50TCY
TRISA=0xff;
ConvertADC(); // Start conversion
ADCON1=0x0f;
while( BusyADC() ); // Wait for
completion while(1)

AD0 = ReadADC(); // Read result {

CloseADC(); // Disable A/D ADC0();


converter
PORTB=AD0;
}
PORTD=AD0>>8;
void main(void)
}
{
}
TRISB=0x00;

Câu 2.23: (4 điểm)


Vẽ sơ đồ mạch điện
mô phỏng như hình U?
bên. Viết chương RV?
2
3
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15
16
RA1/AN1/C2IN- RC1/T1OSI/CCP2B
trình biến đổi điện áp 4
5
RA2/AN2/C2IN+/VREF-/CVREF RC2/CCP1/P1A
17
18
tương tự trên AN0 6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
23
48%

RA4/T0CKI/C1OUT RC4/SDI/SDA
7 24
thành tín hiệu số. 14
RA5/AN4/SS/HLVDIN/C2OUT
RA6/OSC2/CLKO
RC5/SDO
RC6/TX/CK
25
Hiển thị giá trị biến 10k 13
RA7/OSC1/CLKI RC7/RX/DT
26

đổi được dưới dạng 33


RB0/AN12/FLT0/INT0 RD0/PSP0
19
34 20 R?
số nhị phân trên 35
RB1/AN10/INT1
RB2/AN8/INT2
RD1/PSP1
RD2/PSP2
21 10k
36 22
RB3/AN9/CCP2A RD3/PSP3
PORTD, PORTB, 37
RB4/KBI0/AN11 RD4/PSP4
27

như sau: 38
39
RB5/KBI1/PGM
RB6/KBI2/PGC
RD5/PSP5/P1B
RD6/PSP6/P1C
28
29
Bit D0÷D7 hiển thị 40
RB7/KBI3/PGD RD7/PSP7/P1D
30

trên RD0÷RD7; bit RE0/RD/AN5


8
9
C1
D8,D9 hiển thị trên RE1/WR/AN6
RE2/CS/AN7
10
1
RB0,RB1. RE3/MCLR/VPP
PIC18F4520
CLOCK=8MHz

===========================================
#include<p18f4520.h> #include<adc.h>
#include<delays.h> #define DATA PORTA
#include<stdio.h> void ADC0();
==================================================================================
74
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

unsigned int AD0; CloseADC(); // Disable A/D


converter
void ADC0()
}
{
void main(void)
OpenADC( ADC_FOSC_32 &
{
ADC_RIGHT_JUST &
TRISB=0x00;
ADC_12_TAD,
TRISD=0x00;
ADC_CH0 &
TRISA=0xff;
ADC_INT_OFF&
ADCON1=0x0f;
ADC_VREFPLUS_VDD &
while(1)
ADC_VREFMINUS_VSS,13);
{
Delay10TCYx( 5 ); // Delay for
50TCY ADC0();
ConvertADC(); // Start conversion PORTD=AD0;
while( BusyADC() ); // Wait for PORTB=AD0>>8;
completion
}
AD0 = ReadADC(); // Read result
}
Câu 2.24: (4 điểm)
Vẽ sơ đồ mạch điện
mô phỏng như hình U?
bên. Viết chương RV?
2
3
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15
16
trình biến đổi điện áp 4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
17

tương tự trên AN1 5


6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
18
23
48%

RA4/T0CKI/C1OUT RC4/SDI/SDA
thành tín hiệu số. 7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
Hiển thị giá trị biến 10k 13
RA6/OSC2/CLKO
RA7/OSC1/CLKI
RC6/TX/CK
RC7/RX/DT
26

đổi được dưới dạng 33 19


RB0/AN12/FLT0/INT0 RD0/PSP0
số nhị phân trên 34
35
RB1/AN10/INT1 RD1/PSP1
20
21
R?
RB2/AN8/INT2 RD2/PSP2 10k
PORTD, PORTB, 36
RB3/AN9/CCP2A RD3/PSP3
22
37 27
như sau: 38
RB4/KBI0/AN11
RB5/KBI1/PGM
RD4/PSP4
RD5/PSP5/P1B
28
Bit D0÷D7 hiển thị 39
40
RB6/KBI2/PGC RD6/PSP6/P1C
29
30
RB7/KBI3/PGD RD7/PSP7/P1D
trên RD0÷RD7; bit
D8,D9 hiển thị trên RE0/RD/AN5
8 C1
9
RE1/WR/AN6
10
RB0,RB1. RE2/CS/AN7
1
RE3/MCLR/VPP
PIC18F4520
CLOCK=8MHz

==================================================================================
75
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

==========================================
#include<p18f4520.h> while( BusyADC() ); // Wait for
completion
#include<delays.h>
AD0 = ReadADC(); // Read result
#include<stdio.h>
CloseADC(); // Disable A/D
#include<adc.h> converter
#define DATA PORTA }
void ADC0(); void main(void)
unsigned int AD0; {
void ADC0() TRISB=0x00;
{ TRISD=0x00;
OpenADC( ADC_FOSC_32 & TRISA=0xff;
ADC_RIGHT_JUST & ADCON1=0x0f;
ADC_12_TAD, while(1)
ADC_CH1 & {
ADC_INT_OFF& ADC0();
ADC_VREFPLUS_VDD & PORTD=AD0;
ADC_VREFMINUS_VSS,13); PORTB=AD0>>8;
Delay10TCYx( 5 ); // Delay for }
50TCY
}
ConvertADC(); // Start conversion
Câu 2.25: (4 điểm)
Vẽ sơ đồ mạch điện
mô phỏng như hình
bên. Viết chương
trình biến đổi điện áp
tương tự trên AN1
thành tín hiệu số.
Hiển thị giá trị biến
đổi được dưới dạng
số nhị phân trên
PORTD, PORTB,

==================================================================================
76
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

như sau: U?
Bit D0÷D7 hiển thị RV?
2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15
3 16
trên RD0÷RD7; bit 4
RA1/AN1/C2IN-
RA2/AN2/C2IN+/VREF-/CVREF
RC1/T1OSI/CCP2B
RC2/CCP1/P1A
17
D8,D9 hiển thị trên 5
6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
18
23

48%
RA4/T0CKI/C1OUT RC4/SDI/SDA
RB1,RB2. 7
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
14 25
RA6/OSC2/CLKO RC6/TX/CK
10k 13 26
RA7/OSC1/CLKI RC7/RX/DT
33 19
RB0/AN12/FLT0/INT0 RD0/PSP0
34
RB1/AN10/INT1 RD1/PSP1
20 R?
35 21 10k
RB2/AN8/INT2 RD2/PSP2
36 22
RB3/AN9/CCP2A RD3/PSP3
37 27
RB4/KBI0/AN11 RD4/PSP4
38 28
RB5/KBI1/PGM RD5/PSP5/P1B
39 29
RB6/KBI2/PGC RD6/PSP6/P1C
40 30
RB7/KBI3/PGD RD7/PSP7/P1D

RE0/RD/AN5
8 C1
9
RE1/WR/AN6
10
RE2/CS/AN7
1
RE3/MCLR/VPP
PIC18F4520
CLOCK=8MHz
=============================================
#include<p18f4520.h> ADC_INT_OFF& //LUA
CHON CHUYEN DOI TUNG BIT
#include<delays.h>
ADC_VREFPLUS_VDD& //
#include<stdio.h> LAY DIEN AP THAM CHIEU {+-5V}
#include<adc.h> ADC_VREFMINUS_VSS,
13); //CHO PHEP AN0
#define DATA PORTA
Delay1KTCYx( 5 ); // Delay
void ADC0(void);
for 50TCY
unsigned int AD0;
ConvertADC(); // Start
void ADC0(void) conversion

{ while( BusyADC() ); // Wait


for completion
OpenADC(
AD0 = ReadADC(); // Read
ADC_FOSC_32 & // TAN result
SO CHUYEN DOI ADC. THACH ANH
CHIA 32 CloseADC(); // Disable A/D
converter
ADC_RIGHT_JUST & //
CHUYEN DOI DICH PHAI }

ADC_12_TAD,
ADC_CH1 & void main(void)
//CHO PHEP AN0
==================================================================================
77
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

{ {
TRISB=0X00; ADC0();
TRISD=0X00; PORTB=AD0;
TRISA=0XFF; PORTD=AD0>>7;
ADCON1=0X0D; }
while(1) }

Câu 2.26: (4 điểm)


Vẽ sơ đồ mạch điện

Net1
mô phỏng như hình KEY
2 15
bên. Viết chương 3
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
16
R1
RA1/AN1/C2IN- RC1/T1OSI/CCP2B
trình truyền ký tự 4
5
RA2/AN2/C2IN+/VREF-/CVREF RC2/CCP1/P1A
17
18
10k
“A” qua USART khi 6
RA3/AN3/C1IN+/VREF+
RA4/T0CKI/C1OUT
RC3/SCK/SCL
RC4/SDI/SDA
23
nhấn KEY, truyền ký 7
14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
24
25
RA6/OSC2/CLKO RC6/TX/CK RXD
tự “B” khi nhả KEY 13
RA7/OSC1/CLKI RC7/RX/DT
26
TXD
33 19
RB0/AN12/FLT0/INT0 RD0/PSP0
34 20
RB1/AN10/INT1 RD1/PSP1 RTS
35 21
RB2/AN8/INT2 RD2/PSP2
36 22
RB3/AN9/CCP2A RD3/PSP3 CTS
37 27
RB4/KBI0/AN11 RD4/PSP4
38 28
RB5/KBI1/PGM RD5/PSP5/P1B
39 29
RB6/KBI2/PGC RD6/PSP6/P1C
40 30 Net1
RB7/KBI3/PGD RD7/PSP7/P1D
8
RE0/RD/AN5
9
RE1/WR/AN6
10
RE2/CS/AN7
1
RE3/MCLR/VPP

============================================
#include<p18f4520.h> #include<delays.h>
#include<usart.h> #pragma config OSC=HS
#include<stdio.h> #pragma config WDT=OFF
==================================================================================
78
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

#pragma config MCLRE=ON


USART_BRGH_HIGH,25);//toc do
#define sw PORTDbits.RD7 baud =Fosc/(16* (spbrg+ 1))
// thuc te thi noi 2 chan TX va RX noi vao
c0ng com qua IC MAX232. PIR1bits.TXIF=1;//dat co truyen =1
de truyen byte dau tien
void main(void)
while(1)
{ int i;
{
TRISD=0xff;
if(sw==0)
TRISC=0x80;// RC7 vao RC6 ra
{
OpenUSART(
USART_TX_INT_OFF& WriteUSART(0x41);
Delay10KTCYx(50);
USART_RX_INT_OFF&
while(!sw);
USART_ASYNCH_MODE& WriteUSART(0x42);
}
USART_EIGHT_BIT&
}

USART_CONT_RX& }

Câu 2.27: (4 điểm)


Vẽ sơ đồ mạch điện

Net1
mô phỏng như hình KEY
2 15 Net1
bên. Viết chương 3
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
16
R1
RA1/AN1/C2IN- RC1/T1OSI/CCP2B
trình truyền ký tự “1” 4
5
RA2/AN2/C2IN+/VREF-/CVREF RC2/CCP1/P1A
17
18
10k
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
qua USART khi nhấn 6
RA4/T0CKI/C1OUT RC4/SDI/SDA
23
7 24
KEY, truyền ký tự 14
RA5/AN4/SS/HLVDIN/C2OUT
RA6/OSC2/CLKO
RC5/SDO
RC6/TX/CK
25
RXD
“2” khi nhả KEY 13
RA7/OSC1/CLKI RC7/RX/DT
26
TXD
33 19
RB0/AN12/FLT0/INT0 RD0/PSP0
34 20
RB1/AN10/INT1 RD1/PSP1 RTS
35 21
RB2/AN8/INT2 RD2/PSP2
36 22
RB3/AN9/CCP2A RD3/PSP3 CTS
37 27
RB4/KBI0/AN11 RD4/PSP4
38 28
RB5/KBI1/PGM RD5/PSP5/P1B
39 29
RB6/KBI2/PGC RD6/PSP6/P1C
40 30
RB7/KBI3/PGD RD7/PSP7/P1D
8
RE0/RD/AN5
9
RE1/WR/AN6
10
RE2/CS/AN7
1
RE3/MCLR/VPP

==================================================================================
79
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

===============================================
#include<p18f4520.h>
USART_EIGHT_BIT&
#include<usart.h>
#include<stdio.h> USART_CONT_RX&
#include<delays.h>
USART_BRGH_HIGH,25);//toc do
#pragma config OSC=HS
baud =Fosc/(16* (spbrg+ 1))
#pragma config WDT=OFF
//
#pragma config MCLRE=ON PIR1bits.TXIF=1;//dat co truyen =1
de truyen byte dau tien
#define sw PORTDbits.RD7
while(1)
// thuc te thi noi 2 chan TX va RX noi vao
c0ng com qua IC MAX232. {

void main(void) if(sw==0)

{ {

TRISD=0xff; WriteUSART('A');

TRISC=0x80;// RC7 vao RC6 ra Delay10KTCYx(50);

OpenUSART( while(!sw);
USART_TX_INT_OFF&
WriteUSART('B');
}
USART_RX_INT_OFF&
}
USART_ASYNCH_MODE& }

==================================================================================
80
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

Câu 2.28: (4 điểm)


Vẽ sơ đồ mạch điện

Net1
mô phỏng như hình KEY
2 15
bên. Viết chương 3
RA0/AN0/C1IN-
RA1/AN1/C2IN-
RC0/T1OSO/T13CKI
RC1/T1OSI/CCP2B
16
R1
trình truyền ký tự “a” 4
5
RA2/AN2/C2IN+/VREF-/CVREF RC2/CCP1/P1A
17
18
10k
qua USART khi nhấn 6
RA3/AN3/C1IN+/VREF+
RA4/T0CKI/C1OUT
RC3/SCK/SCL
RC4/SDI/SDA
23
7 24
KEY, truyền ký tự 14
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
25
RA6/OSC2/CLKO RC6/TX/CK RXD
“b” khi nhả KEY 13
RA7/OSC1/CLKI RC7/RX/DT
26
TXD
33 19
RB0/AN12/FLT0/INT0 RD0/PSP0
34 20
RB1/AN10/INT1 RD1/PSP1 RTS
35 21
RB2/AN8/INT2 RD2/PSP2
36 22
RB3/AN9/CCP2A RD3/PSP3 CTS
37 27
RB4/KBI0/AN11 RD4/PSP4
38 28
RB5/KBI1/PGM RD5/PSP5/P1B
39 29
RB6/KBI2/PGC RD6/PSP6/P1C
40 30
RB7/KBI3/PGD RD7/PSP7/P1D
8 Net1
RE0/RD/AN5
9
RE1/WR/AN6
10
RE2/CS/AN7
1
RE3/MCLR/VPP

==============================================
#include<p18f4520.h> ADCON1=0x0f;
#include<usart.h> OpenUSART(
USART_TX_INT_OFF&
#include<stdio.h>
#include<delays.h> USART_RX_INT_OFF&
#pragma config OSC=HS
USART_ASYNCH_MODE&
#pragma config WDT=OFF
#pragma config MCLRE=ON
USART_EIGHT_BIT&
#define sw PORTEbits.RE0
// thuc te thi noi 2 chan TX va RX noi vao USART_CONT_RX&
c0ng com qua IC MAX232.
void main(void) USART_BRGH_HIGH,25);//toc do
baud =Fosc/(16* (spbrg+ 1))
{ int i;
TRISE=0xff; PIR1bits.TXIF=1;//dat co truyen =1
de truyen byte dau tien
TRISC=0x80;// RC7 vao RC6 ra
while(1)
==================================================================================
81
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

{ while(!sw);
if(sw==0) WriteUSART('b');
{ }
WriteUSART('a'); }
Delay10KTCYx(50); }

Câu 2.29: (4 điểm)


Vẽ sơ đồ mạch điện
mô phỏng như hình
bên. Viết chương
trình:
- Khai báo một biến
nguyên dương, tên:
“x”;
-Gán cho biến x một
số bất kỳ trong
khoảng 0÷99;
- Hiển thị giá trị của
biến x trên 2 LED 7
thanh theo mẫu như
hình bên.

===========================================
#include<p18f4520.h> void main(void)
#include<stdio.h> { int chuc,donvi;
#include<delays.h> ADCON1=0x0f;
#pragma config OSC=HS TRISC=0x00;
#pragma config WDT=OFF TRISD=0x00;
#pragma config MCLRE=ON x=68;
unsigned char m[]={0xC0, 0xF9, 0xA4, while(1)
0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
{
char x;
chuc=x/10;

==================================================================================
82
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

donvi=x%10; PORTDbits.RD1=1;
PORTDbits.RD0=1; PORTC=m[donvi];
PORTDbits.RD1=0; Delay10KTCYx(5);
PORTC=m[chuc]; }
Delay10KTCYx(5); }
PORTDbits.RD0=0;

Câu 2.30: (4 điểm)


Vẽ sơ đồ mạch điện
mô phỏng như hình
bên. Viết chương
trình:
- Khai báo một biến
thực, tên: “x”;
-Gán cho biến x một
số bất kỳ trong
khoảng 0÷9.9;
- Hiển thị giá trị của
biến x trên 2 LED 7
theo mẫu như hình
bên.

=============================================
#include<p18f4520.h> char m[]={0xC0,0xF9, 0xA4, 0xB0, 0x99,
0x92, 0x82, 0xF8, 0x80, 0x90};'
#include<stdio.h>
char led[]={0x40, 0x79, 0x24, 0x30, 0x19,
#include<delays.h> 0x12, 0x02, 0x78, 0x00, 0x10};
#pragma config OSC=HS
#pragma config WDT=OFF void main(void)
#pragma config MCLRE=ON {float x;
==================================================================================
83
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

int i; PORTDbits.RD0=1;
int nguyen,thapphan; PORTDbits.RD1=0;
ADCON1=0x0f; PORTC=led[nguyen];
TRISC=0x00; Delay10KTCYx(5);
TRISD=0x00; PORTDbits.RD0=0;
x=7.8; PORTDbits.RD1=1;
while(1) PORTC=m[thapphan];
{ i=(int)(x*10); Delay10KTCYx(5);
nguyen=i/10; }
thapphan=i%10; }

Câu 2.31: (4 điểm)


Vẽ sơ đồ mạch điện
mô phỏng như hình
bên. Viết chương
trình:
- Khai báo một biến
nguyên dương, tên:
“x”;
-Gán cho biến x một
số bất kỳ trong
khoảng 0÷99;
- Hiển thị giá trị của
biến x trên 2 LED 7
thanh theo mẫu như
hình bên.

=============================================
#include<P18f4520.h> unsigned char m[]={0xC0, 0xF9, 0xA4,
0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
#include<delays.h>
void main(void)
#define led1 PORTAbits.RA0
{
#define led2 PORTAbits.RA1
ADCON1=0x0f;
int chuc,donvi,x;
TRISA=0x00;
==================================================================================
84
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

TRISC=0x00; Delay10KTCYx(5);
x=56; led1=0;
while(1) led2=1;
{ PORTC=m[donvi];
chuc=x/10; Delay10KTCYx(5);
donvi=x%10; }
led1=1;
led2=0; }
PORTC=m[chuc];

Câu 2.32: (4 điểm)


Vẽ sơ đồ mạch điện
mô phỏng như hình
bên. Viết chương
trình:
- Khai báo một biến
thực, tên: “x”;
-Gán cho biến x một
số bất kỳ trong
khoảng 0÷9.9;
- Hiển thị giá trị của
biến x trên 2 LED 7
theo mẫu như hình
bên.

==============================================
#include<p18f4520.h> #pragma config MCLRE=ON
#include<stdio.h> unsigned char m[]={0xC0, 0xF9, 0xA4,
0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
#include<delays.h>
unsigned char led[]={0x40, 0x79, 0x24,
#pragma config OSC=HS 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10};
#pragma config WDT=OFF
==================================================================================
85
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

float x; thapphan=i%10;
int i; PORTBbits.RB0=1;
void main(void) PORTBbits.RB1=0;
{ int nguyen,thapphan; PORTC=led[nguyen];
ADCON1=0x0f; Delay10KTCYx(5);
TRISC=0x00; PORTBbits.RB0=0;
TRISB=0x00; PORTBbits.RB1=1;
x=7.7; PORTC=m[thapphan];
while(1) Delay10KTCYx(5);
{ i=(int)(x*10); }
nguyen=i/10; }

Câu 2.33: (4 điểm)


Vẽ sơ đồ mạch điện
mô phỏng như hình LCD?
bên. Viết chương U?
LM016L

trình: 2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15

- Khai báo một biến


3 16
RA1/AN1/C2IN- RC1/T1OSI/CCP2B
4 17
RA2/AN2/C2IN+/VREF-/CVREF RC2/CCP1/P1A
VDD
VSS

VEE
nguyên dương, tên:

RW
5 18

RS

D0
D1
D2
D3
D4
D5
D6
D7
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL

E
6 23
RA4/T0CKI/C1OUT RC4/SDI/SDA
“x”;
7 24
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
1
2
3

RS 4
RW 5
E 6

7
8
9
10
11
12
13
14
14 25
RA6/OSC2/CLKO RC6/TX/CK
-Gán cho biến x một
13 26
RA7/OSC1/CLKI RC7/RX/DT

số bất kỳ trong
33 19
RB0/AN12/FLT0/INT0 RD0/PSP0
34 20
RB1/AN10/INT1 RD1/PSP1
khoảng 0÷99;
35 21
RB2/AN8/INT2 RD2/PSP2
36 22
RB3/AN9/CCP2A RD3/PSP3
- Hiển thị giá trị của
37 27
RB4/KBI0/AN11 RD4/PSP4
38 28
RB5/KBI1/PGM RD5/PSP5/P1B
biến x trên LCD theo
39 29
RB6/KBI2/PGC RD6/PSP6/P1C
40 30
RB7/KBI3/PGD RD7/PSP7/P1D
mẫu như hình bên. RE0/RD/AN5
8 RS
9 RW
RE1/WR/AN6
10 E
RE2/CS/AN7
1
RE3/MCLR/VPP
PIC18F4520
CLOCK=8MHz
==============================================
#include<p18f4520.h> #define LCD_DATA PORTD
#include<stdio.h> #define LCD_RS PORTEbits.RE0
#include<delays.h> #define LCD_RW PORTEbits.RE1
#pragma config OSC=HS, MCLRE=ON, #define LCD_EN PORTEbits.RE2
WDT=OFF
==================================================================================
86
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

void Lcd_cauhinh(void); // khoi tao lcd LCD_RS=1;


void Lcd_ghilenh(char lenh); LCD_RW=0;
void Lcd_ghidulieu(char dulieu); LCD_EN=1;
void Lcd_cghichuoi(char *chuoi); LCD_DATA=dulieu;
void Lcd_cauhinh(void) LCD_EN=0;
{ Delay1KTCYx(10); //5ms
Lcd_ghilenh(0x03); }
Lcd_ghilenh(0x38); void main()
Lcd_ghilenh(0x06); {
Lcd_ghilenh(0x0c); int x,a,b;
Lcd_ghilenh(0x01); TRISD=0X00;
// xoa man hinh TRISE=0X00;
} ADCON1=0X0F;
void Lcd_ghilenh(char lenh) Lcd_cauhinh();
{ x=33;
LCD_RS=0; // =0 THANH GI LENH, =1 while(1)
THANH GHI DL
{
LCD_RW=0; // =0 GHI DL, =1 DOC DL
a=x/10;
LCD_EN=1;
b=x%10;
LCD_DATA = lenh;
Lcd_ghilenh(0x80); // dau dong 1
LCD_EN=0;
Lcd_ghidulieu(a+0x30);
Delay1KTCYx(10); //5ms
Lcd_ghidulieu(b+0x30);
}
}
void Lcd_ghidulieu(char dulieu)
}
{

Câu 2.34: (4 điểm)


Vẽ sơ đồ mạch điện
==================================================================================
87
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

mô phỏng như hình LCD?


bên. Viết chương U?
LM016L

2 15
trình: 3
RA0/AN0/C1IN-
RA1/AN1/C2IN-
RC0/T1OSO/T13CKI
RC1/T1OSI/CCP2B
16

- Khai báo một biến 4


RA2/AN2/C2IN+/VREF-/CVREF RC2/CCP1/P1A
17

VDD
VSS

VEE

RW
5 18

RS

D0
D1
D2
D3
D4
D5
D6
D7
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL

E
nguyên dương, tên: 6
7
RA4/T0CKI/C1OUT
RA5/AN4/SS/HLVDIN/C2OUT
RC4/SDI/SDA
RC5/SDO
23
24
“x”;

1
2
3

RS 4
RW 5
E 6

7
8
9
10
11
12
13
14
14 25
RA6/OSC2/CLKO RC6/TX/CK
13 26
RA7/OSC1/CLKI RC7/RX/DT
-Gán cho biến x một 33
RB0/AN12/FLT0/INT0 RD0/PSP0
19
số bất kỳ trong 34
35
RB1/AN10/INT1
RB2/AN8/INT2
RD1/PSP1
RD2/PSP2
20
21
khoảng 0÷99; 36
37
RB3/AN9/CCP2A
RB4/KBI0/AN11
RD3/PSP3
RD4/PSP4
22
27
- Hiển thị giá trị của 38
39
RB5/KBI1/PGM RD5/PSP5/P1B
28
29
RB6/KBI2/PGC RD6/PSP6/P1C
biến x trên LCD theo 40
RB7/KBI3/PGD RD7/PSP7/P1D
30

mẫu như hình bên. RE0/RD/AN5


8 E
9 RW
RE1/WR/AN6
10 RS
RE2/CS/AN7
1
RE3/MCLR/VPP
PIC18F4520
CLOCK=8MHz
===============================================
#include<p18f4520.h> Lcd_ghilenh(0x06);
#include<stdio.h> Lcd_ghilenh(0x0c);
#include<delays.h> Lcd_ghilenh(0x01);
#pragma config OSC=HS, MCLRE=ON, // xoa man hinh
WDT=OFF
}
#define LCD_DATA PORTD
void Lcd_ghilenh(char lenh)
#define LCD_RS PORTEbits.RE0
{
#define LCD_RW PORTEbits.RE1
LCD_RS=0; // =0 THANH GI LENH, =1
#define LCD_EN PORTEbits.RE2 THANH GHI DL
void Lcd_cauhinh(void); // khoi tao lcd LCD_RW=0; // =0 GHI DL, =1 DOC DL
void Lcd_ghilenh(char lenh); LCD_EN=1;
void Lcd_ghidulieu(char dulieu); LCD_DATA = lenh;
void Lcd_cghichuoi(char *chuoi); LCD_EN=0;
void Lcd_cauhinh(void) Delay1KTCYx(10); //5ms
{ }
Lcd_ghilenh(0x03); void Lcd_ghidulieu(char dulieu)
Lcd_ghilenh(0x38); {

==================================================================================
88
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

LCD_RS=1; ADCON1=0X0F;
LCD_RW=0; Lcd_cauhinh();
LCD_EN=1; x=34;
LCD_DATA=dulieu; while(1)
LCD_EN=0; {
Delay1KTCYx(10); //5ms a=x/10;
} b=x%10;
void main() Lcd_ghilenh(0x80); // dau dong 1
{ Lcd_ghidulieu(a+0x30);
int x,a,b; Lcd_ghidulieu(b+0x30);
TRISD=0X00; }
TRISE=0X00; }
===============================================================

Câu 2.35: (4 điểm)


Vẽ sơ đồ mạch điện
mô phỏng như hình LCD?
LM016L
bên. Viết chương U?
2 15
trình: 3
RA0/AN0/C1IN-
RA1/AN1/C2IN-
RC0/T1OSO/T13CKI
RC1/T1OSI/CCP2B
16

- Khai báo một biến 4


RA2/AN2/C2IN+/VREF-/CVREF RC2/CCP1/P1A
17
VDD
VSS

VEE

5 18 RW
RS

D0
D1
D2
D3
D4
D5
D6
D7
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
E
thực, tên: “x”; 6
7
RA4/T0CKI/C1OUT
RA5/AN4/SS/HLVDIN/C2OUT
RC4/SDI/SDA
RC5/SDO
23
24
1
2
3

RS 4
RW 5
E 6

7
8
9
10
11
12
13
14
-Gán cho biến x một 14
13
RA6/OSC2/CLKO
RA7/OSC1/CLKI
RC6/TX/CK
RC7/RX/DT
25
26

số bất kỳ trong 33
RB0/AN12/FLT0/INT0 RD0/PSP0
19
khoảng 0÷9.9; 34
35
RB1/AN10/INT1
RB2/AN8/INT2
RD1/PSP1
RD2/PSP2
20
21
- Hiển thị giá trị của 36
37
RB3/AN9/CCP2A RD3/PSP3
22
27
RB4/KBI0/AN11 RD4/PSP4
biến x trên LCD theo 38
39
RB5/KBI1/PGM RD5/PSP5/P1B
28
29
RB6/KBI2/PGC RD6/PSP6/P1C
mẫu như hình bên. 40
RB7/KBI3/PGD RD7/PSP7/P1D
30

8 RS
RE0/RD/AN5
9 RW
RE1/WR/AN6
10 E
RE2/CS/AN7
1
RE3/MCLR/VPP
PIC18F4520
CLOCK=8MHz
==================================================
#include<p18f4520.h> #include<delays.h>
#include<stdio.h> #pragma config OSC=HS, MCLRE=ON,
WDT=OFF
==================================================================================
89
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

#define DATA PORTD }


#define RS PORTEbits.RE0 void ghidulieu(char dulieu)
#define RW PORTEbits.RE1 {
#define EN PORTEbits.RE2 RS=1;
char m[]; RW=0;
void cauhinh(void); // khoi tao lcd EN=1;
void ghilenh(char lenh); DATA=dulieu;
void ghidulieu(char dulieu); EN=0;
void ghichuoi(char *chuoi); Delay1KTCYx(10); //5ms
void cauhinh(void) }
{ void ghichuoi(char *chuoi)
ghilenh(0x03); {
ghilenh(0x38); while(*chuoi)
ghilenh(0x06); {
ghilenh(0x0c); ghidulieu(*chuoi);
ghilenh(0x01); chuoi++;
// xoa man hinh }
} }
void ghilenh(char lenh) void main()
{ {float x;
RS=0; // =0 THANH GI LENH, =1 THANH int i,a,b;
GHI DL
TRISD=0X00;
RW=0; // =0 GHI DL, =1 DOC DL
TRISE=0X00;
EN=1;
ADCON1=0X0F;
DATA = lenh;
cauhinh();
EN=0;
x=3.5;
Delay1KTCYx(10); //5ms
while(1)

==================================================================================
90
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

{ sprintf(&m[0],"%d.%d",a,b);
i=(int)(x*10); ghichuoi(&m[0]);
a=i/10; }
b=i%10; }
ghilenh(0x80); // dau dong 1

Câu 2.36: (4 điểm)


Vẽ sơ đồ mạch điện
mô phỏng như hình LCD?
LM016L
bên. Viết chương U?
2 15
trình: 3
RA0/AN0/C1IN-
RA1/AN1/C2IN-
RC0/T1OSO/T13CKI
RC1/T1OSI/CCP2B
16

- Khai báo một biến 4


RA2/AN2/C2IN+/VREF-/CVREF RC2/CCP1/P1A
17

VDD
VSS

VEE

RW
5 18

RS

D0
D1
D2
D3
D4
D5
D6
D7
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL

E
thực, tên: “x”; 6
7
RA4/T0CKI/C1OUT
RA5/AN4/SS/HLVDIN/C2OUT
RC4/SDI/SDA
RC5/SDO
23
24

-Gán cho biến x một

1
2
3

RS 4
RW 5
E 6

7
8
9
10
11
12
13
14
14 25
RA6/OSC2/CLKO RC6/TX/CK
13 26
RA7/OSC1/CLKI RC7/RX/DT
số bất kỳ trong 33
RB0/AN12/FLT0/INT0 RD0/PSP0
19
khoảng 0÷9.9; 34
35
RB1/AN10/INT1 RD1/PSP1
20
21
RB2/AN8/INT2 RD2/PSP2
- Hiển thị giá trị của 36
37
RB3/AN9/CCP2A RD3/PSP3
22
27
RB4/KBI0/AN11 RD4/PSP4
biến x trên LCD theo 38
39
RB5/KBI1/PGM RD5/PSP5/P1B
28
29
RB6/KBI2/PGC RD6/PSP6/P1C
mẫu như hình bên. 40
RB7/KBI3/PGD RD7/PSP7/P1D
30

8 E
RE0/RD/AN5
9 RW
RE1/WR/AN6
10 RS
RE2/CS/AN7
1
RE3/MCLR/VPP
PIC18F4520
CLOCK=8MHz
==============================================
#include<p18f4520.h> void cauhinh(void); // khoi tao lcd
#include<stdio.h> void ghilenh(char lenh);
#include<delays.h> void ghidulieu(char dulieu);
#pragma config OSC=HS, MCLRE=ON, void ghichuoi(char *chuoi);
WDT=OFF
void cauhinh(void)
#define DATA PORTD
{
#define RS PORTEbits.RE0
ghilenh(0x03);
#define RW PORTEbits.RE1
ghilenh(0x38);
#define EN PORTEbits.RE2
ghilenh(0x06);
char m[];
==================================================================================
91
Chúc mọi người làm tốt phần bài thi của minh
Lập trình vi điều khiển Pic 18f4520 Sơn ic--DT5-K8 HaUI 23/10/2016

ghilenh(0x0c); while(*chuoi)
ghilenh(0x01); {
// xoa man hinh ghidulieu(*chuoi);
} chuoi++;
void ghilenh(char lenh) }
{ }
RS=0; // =0 THANH GI LENH, =1 THANH void main()
GHI DL
{float x;
RW=0; // =0 GHI DL, =1 DOC DL
int i,a,b;
EN=1;
TRISD=0X00;
DATA = lenh;
TRISE=0X00;
EN=0;
ADCON1=0X0F;
Delay1KTCYx(10); //5ms
cauhinh();
}
x=3.6;
void ghidulieu(char dulieu)
while(1)
{
{
RS=1;
i=(int)(x*10);
RW=0;
a=i/10;
EN=1;
b=i%10;
DATA=dulieu;
ghilenh(0x80); // dau dong 1
EN=0;
sprintf(&m[0],"%d.%d",a,b);
Delay1KTCYx(10); //5ms
ghichuoi(&m[0]);
}
}
void ghichuoi(char *chuoi)
}
{
///////////////////////////////HẾT/////////////////////////////////

==================================================================================
92
Chúc mọi người làm tốt phần bài thi của minh

You might also like