Professional Documents
Culture Documents
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
#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; }
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
- 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
==================================================================================
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
================================================
#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
==============================================
#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; }
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
KEY3
C2
KEY4 OSC2
22p
==================================================================================
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
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
===============================================
#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;
==================================================================================
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
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;
==================================================================================
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
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; }
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
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;
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)
}
==================================================================================
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
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;
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
==================================================================================
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
============================================
#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; }
} }
===============================================
#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);
================================================
#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
==================================================================================
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;
==================================================================================
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
==================================================================================
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
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
==================================================================================
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;
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;
==================================================================================
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
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
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;
==================================================================================
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
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;
==================================================================================
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
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
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.
}
}
}
==================================================================================
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
================================================
#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;
=================================================
==================================================================================
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++) }
{ }
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
===============================================
#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; }
=================================================
==================================================================================
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) }
==================================================================================
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
==============================================
#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
==================================================================================
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
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)
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
==================================================================================
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
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
==================================================================================
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) }
{
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
#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
==============================================
#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;
{ }
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
===============================================
#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;
{ }
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
============================================
#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
{ 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
==============================================
#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
{ 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
================================================
#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
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
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
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
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
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
lần. PIC18F4520
==================================================================================
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;
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
==================================================================================
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
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; }
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
============================================
#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
==================================================================================
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);
==============================================
#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
=============================================
#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
================================================
#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
==============================================
#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
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) }
{
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
==================================================================================
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
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
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
===========================================
#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
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
==================================================================================
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
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) }
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
USART_CONT_RX& }
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. {
{ {
TRISD=0xff; WriteUSART('A');
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
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); }
===========================================
#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;
=============================================
#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; }
=============================================
#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];
==============================================
#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; }
trình: 2
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
15
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
2 15
trình: 3
RA0/AN0/C1IN-
RA1/AN1/C2IN-
RC0/T1OSO/T13CKI
RC1/T1OSI/CCP2B
16
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
==================================================================================
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; }
===============================================================
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
==================================================================================
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
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
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