Professional Documents
Culture Documents
2|Page
3|Page
4|Page
Hnh 2 m t cu trc b nh chng trnh. Sau khi khi ng, CPU bt u thc
hin chng trnh v tr 0000H.
Hnh 3 m t a ch ngt mc nh trn b nh chng trnh. Mi khi xy ra ngt,
con tr ca CPU s nhy n ng a ch ngt tng ng v thc thi chng trnh
ti . V d ngt ngoi 0 s c a ch l 0003H, khi xy ra ngt ngoi 0 th con
tr chng trnh s nhy n ng a ch 0003H thc thi chng trnh ti .
Nu trong chng trnh ng dng khng x dng n ngt ngoi 0 th a ch
0003H vn c th dng cho mc ch khc (s dng cho b nh chng trnh)
1.2 B nh d liu
7|Page
Cc thanh ghi c s dng rng ri nht ca 8051 l A (thanh ghi tch ly), B,
R0 R7, DPTR (con tr d liu) v PC (b m chng trnh). Tt c cc d liu
trn u l thanh ghi 8 bit, tr DPTR v PC l 16 bit.
Thanh ghi tch ly A c s dng cho tt c mi php ton s hc v logic.
2.2 Cc thanh ghi c bit.
8051 c 21 thanh ghi chc nng c bit SFR chim phn trn ca RAM ni t
a ch 80H n FFH. Cn lu l khng phi tt c 128 a ch t 80H n FFH
u c nh ngha m ch c 21 a ch c nh ngha. Hnh 8 m t cc thanh
ghi c bit trong vng nh d liu 80H n FFH v gi tr ca chng sau khi
Reset.
9|Page
Thanh ghi tnh ton chnh ca vi iu khin 8051 ACC (Accumulator). L thanh
ghi c bit ca 8051 dng thc hin cc php ton ca CPU
thng k hiu l A
10 | P a g e
CY
AC
F0
RS1
RS0
OV
11 | P a g e
a
Ch
M t Bit
D7H
PSW.6 AC
D6H
PSW.5 FO
D5H
PSW.4 RS1
D4H
Bit
K
Hiu
PSW.7 CY
D3H
01=Bank 1: a ch 08H->0FH
10=Bank 2: a ch 10H->17H
11=Bank 3: a ch 18H->1FH
PSW.2 OV
D2H
PSW.1 -
D1H
Cha dng
D0H
PSW.0 P
12 | P a g e
13 | P a g e
Cc thanh ghi iu khin:Cc thanh ghi iu khin c bit nh IP, IE, TMOD,
TCON, SCON v PCON l cc thanh ghi iu khin v ghi nhn trng thi ca h
thng ngt, b m/nh thi, truyn thng ni tip.
14 | P a g e
1.S CHN.
15 | P a g e
Hnh 1: Ta thy rng trong 40 chn th c 32 chn dnh cho cc cng P0, P1, P2
v P3 vi mi cng c 8 chn. Cc chn cn li c dnh cho ngun VCC, t
GND, cc chn dao ng XTAL1 v XTAL2, chn Reset RST, chn cho php cht
a ch ALE, chn truy cp a ch ngoi EA, cho php ct chng trnh PSEN.
Trong 8 chn ny th 6 chn VCC , GND, XTAL1, XTAL2, RST v EA c cc
h 8051 s dng. Hay ni cch khc l chng phi c ni cho h thng lm
vic. Cn hai chn khc l PSEN v ALE c s dng ch yu trong cc h 8031.
Chn VCC:
Chn s 40 l VCC , c chc nng cp in p ngun cho chp. Ngun in p l
+5V.
Chn GND
Chn s 20 l GND, c ni vi t.
Chn XTAL1 v XTAL2
8051 c mt b dao ng trn chp nhng n yu cu c mt xung ng h ngoi
chy n. Mt b dao ng thch anh s c ni ti cc chn u vo XTAL1
(chn 19) v XTAL2 (chn 18). B dao ng thch anh c ni ti XTAL1 v
XTAL2 cng cn hai t gm gi tr khong 30pF. Mt pha ca t in c ni
xung t nh c trnh by trn hnh 2a.
Cn phi lu rng c nhiu tc khc nhau ca h 8051. Tc c coi nh
l tn s cc i ca b dao ng c ni ti chn XTAL. Mt b vi iu khin
8051 yu cu mt tinh th thch anh c tn s khng ln hn 20MHz. Khi 8051
c ni ti mt b dao ng tinh th thch anh v cp ngun th ta c th quan st
tn s trn chn XTAL2 bng my hin sng. Nu ta quyt nh s dng mt
ngun tn s khc b dao ng thch anh, chng hn nh l b dao ng TTL th
n s c ni ti chn XTAL1, cn chn XTAL2 th h khng ni nh hnh
2b.
16 | P a g e
Chn RST
RST l chn s 9 - Reset. N l mt chn u vo c mc tch cc cao (bnh
thng mc thp). Khi cp xung cao ti chn ny th b vi iu khin s c
Reset v kt thc mi hot ng. iu ny thng c coi nh l s ti bt
ngun. Khi kch hot ti bt ngun s lm mt mi gi tr trn cc thanh ghi. Hnh
3 lit k cc thanh ghi c bit ca 8051 v gi tr ca chng sau khi Reset.
18 | P a g e
Hnh 4: Cng P0 vi cc in tr ko
20 | P a g e
Chc nng
Chn s
P3.0
10
P3.1
11
P3.2
Ngt 0(INT0)
12
P3.3
Ngt 1(INT1)
13
P3.4
B nh thi 0 (TO)
14
P3.5
B nh thi 1 (T1)
15
P3.6
Ghi (WR)
16
P3.7
c (RD)
17
21 | P a g e
Cc bit P3.0 v P3.1 cung cp tn hiu nhn v pht d liu trong truyn thng d
liu ni tip.
Cc bit P3.2 v P3.3 c dnh cho cc ngt ngoi.
Bit P3.4 v P3.5 c dng cho cc b nh thi 0 v 1.
Cui cng cc bit P3.6 v P3.7 ghi v c cc b nh ngoi khi c ni ti cc
h thng 8031.
22 | P a g e
Quan trng hn, trong phng php ngt th b vi iu khin cn c th che (lm
l) mt yu cu phc v ca thit b. iu ny li mt ln na khng th thc hin
c trong phng php thm d.
+ L do quan trng nht m phng php ngt c u chung l v n khng
lng ph thi gian cho cc thit b khng cn phc v. Cn phng php thm d
lm lng ph thi gian ca b vi iu khin bng cch hi d tng thit b k c khi
chng khng cn phc v.
1.1.2 Su ngt trong 8051
Thc t ch c 5 ngt dnh cho ngi dng trong 8051 nhng cc nh sn
xut ni rng c 6 ngt v h tnh c lnh RESET. Su ngt ca 8051 c phn b
nh sau:
1. RESET: Khi chn RESET c kch hot t 8051, b m chng trnh
nhy v a ch 0000H. y l a ch bt li ngun
2. 2 ngt dnh cho cc b nh thi: mt cho Timer0 v mt cho Timer1. a
ch tng ng ca cc ngt ny l 000BH v 001BH.
3. 2 ngt dnh cho cc ngt phn cng bn ngoi: chn 12 (P3.2) v 13
(P3.3) ca cng P3 l cc ngt phn cng bn ngoi INT0 v INT1 tng ng. a
ch tng ng ca cc ngt ngoi ny l 0003H v 0013H.
4. Truyn thng ni tip: c 1 ngt chhung cho c nhn v truyn d liu ni
tip. a ch ca ngt ny trong bng vector ngt l 0023H.
1.2. Lp trnh cc ngt b nh thi
Trong phn ny ta s s dng cc ngt lp trnh cho cc b nh thi
ca 8051.
C quay v 0 ca b nh thi v ngt
Chng ta bit rng c b nh thi TF c bt ln cao khi b nh thi t
gi tr cc i v quay v 0 (Roll - over). Trong khi thm d c TF th ta phi i
cho n khi c TFc bt ln. Vn vi phng php ny l b vi iu khin b
tri buc trong khi ch c TF c bt v khng th lm c bt k vic g khc.
S dng cc ngt s gii quyt c vn ny v trnh c s tri buc b
vi iu khin. Nu b ngt nh thi trong thanh ghi IE c php th mi khi n
quay tr v 0 b vi iu khin s b ngt, bt chp n ang thc hin vic g v
24 | P a g e
25 | P a g e
1.3.2:Ngt theo sn
Ngt theo sn l ngt s xy ra khi c mt sn m xut hin trn cc
chn ngt ca vi iu khin. iu ny lm cho ngt theo sn khc phc c
nhc im ca ngt theo mc nh ta thy trn.
kch hot ch ngt theo sn th chng ta phi vit chng trnh ci
t cho cc bit ca thanh ghi TCON:
Trong phng php thm d th chng ta phi i cho c (TI hay RI) bt ln v
trong lc ch i th ta khng th lm g c c.
Cn trong phng php ngt th ta c bo khi 8051 nhn c mt byte
hoc n sn sng truyn byte k tip v ta c th lm cc cng vic khc trong khi
ch truyn thng ni tip c thc hin.
Trong 8051 ch c mt ngt dnh ring cho truyn thng ni tip. Ngt ny
c dng cho c truyn v nhn d liu. Nu bit ngt truyn thng ES IE.4 trong thanh ghi IE c php, th khi 1 trong 2 c RI hoc TI bt ln, 8051
s nhn c ngt v nhy n a ch trnh phc v ngt dnh cho truyn thng
ni tip 0023H trong bng vector ngt thc hin n. Trong trnh ISR ny chng
ta phi kim tra cc c TI v RI xem c no gy ra ngt p ng mt cch
ph hp .
Hnh 5: Thanh ghi mc u tin ngt IP: Bit u tin = 1 l mc u tin cao, Bit u
tin = 0 l mc u tin thp.
-
31 | P a g e
32 | P a g e
33 | P a g e
Ch
Ch hot ng
34 | P a g e
TR1
TF0
TR0
IT1
IE1
IT0
IE0
36 | P a g e
2.2 Ch 1
Trong ch 1, b nh thi dng c hai thanh ghi TH v TL cha gi tr m,
v th ch ny cn gi l ch nh thi 16 bt.
Vi ch d 1 gi tr ln nht m timer cha l 65535, khi m qu gi tr ny s
xy ra trn , khi c trn TF s c t bng 1.
Sau khi trn nu mun chng trnh m ta phi c lnh np gi tr kh to sau khi
dng timer bng cch xa bt TR.
2.3 Ch 2
Trong ch 2 b timer dung TL cha cc gi tr m va TH cha gi tr np
li v ch ny c gi l ch t np li 8 bt.
Sau khi m qu 225 s xy ra trn, khi TF c t bng 1 ng thi gi tr
ca timer t ng c np li bng ni dung TH.
2.4 Ch 3
Trong ch 3, Timer 0 c tch thnh 2 b timer8 bt hot ng c lp ch
ny s gip cung cp thm cho ta b timer na.
37 | P a g e
38 | P a g e
39 | P a g e
P1=0x10;P2=0x00; delay();
P1=0x08;P2=0x00; delay();
P1=0x04;P2=0x00; delay();
P1=0x02;P2=0x00; delay();
P1=0x01;P2=0x00; delay();}
}
void TT4(){
for(j=0;j<2;j++){
P1=0x01;P2=0x80; delay();
P1=0x02;P2=0x40; delay();
P1=0x04;P2=0x20; delay();
P1=0x08;P2=0x10; delay();
P1=0x10;P2=0x08; delay();
P1=0x20;P2=0x04; delay();
P1=0x40;P2=0x02; delay();
P1=0x80;P2=0x01; delay();}}
void TT3(){
for(j=0;j<2;j++){
P1=0x01;P2=0x00; delay();
P1=0x02;P2=0x00; delay();
P1=0x04;P2=0x00; delay();
P1=0x08;P2=0x00; delay();
P1=0x10;P2=0x00; delay();
P1=0x20;P2=0x00; delay();
P1=0x40;P2=0x00; delay();
40 | P a g e
P1=0x80;P2=0x00; delay();
P2=0x01;P1=0x00; delay();
P2=0x02;P1=0x00; delay();
P2=0x04;P1=0x00; delay();
P2=0x08;P1=0x00; delay();
P2=0x10;P1=0x00; delay();
P2=0x20;P1=0x00; delay();
P2=0x40;P1=0x00; delay();
P2=0x80;P1=0x00; delay();}
}
void TT5(){
for(j=0;j<3;j++){
P1=P2=0xAA; delay();
P1=P2=0x55; delay();}}
void main(){
while(1){
TT1();TT2();TT3();TT4();TT5();}}
S mch:
41 | P a g e
Bi 2: Vit chng trnh iu khin LED nhy lin tc, LED xanh nhy 10 ln
mi khi nhn SW?
#include <REG51.H>
sbit LED1=P1^0;
sbit LED2=P1^1;
sbit SW=P1^2;
unsigned int i,j;
void delay(){
for(i=0;i<30000;i++);}
void main (){
while(1){
LED2=0;
LED1=~LED1;delay();
if(SW==0){
for(j=0;j<10;j++)
{
LED2=LED1=1; delay();
LED2=LED1=0; delay();}}}}
42 | P a g e
S mch
Bi 3: Vit chng trnh s dng ngt ngoi m phng bng truyn m sn phm
s dng nt nhn sw thay cho cm bin v hin th ln 6 LED 7 thanh?
#include <REGX51.H>
unsigned char so;
unsigned int i,s1,s2,s3,s4,s5,s6;
unsigned char M[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
//Hien thi cac so tu 0 - 9
//Ham tao tre
void delay(unsigned int i){
for(i=0;i<=121;i++){
;}}
//Chuong trinh hien thi
void hienthi(){
s1=(so/100000)
%10;
s2=(so/10000)
%10;
s3=(so/1000)
%10;
s4=(so/100)
%10;
s5=(so/10) %10;
s6= so
%10;
for(i=0;i<=9;i++){
P0=M[s1]; P2_0=1; delay(10); P2_0=0;
P0=M[s2]; P2_1=1; delay(10); P2_1=0;
P0=M[s3]; P2_2=1; delay(10); P2_2=0;
43 | P a g e
//Ham ngat
EA=0;
so++;
if(so==1000000) so=0;
EA=1;
void main(){
IE=0x81;
IT0=1;
}
//ham chinh
//co ngat ngoai
//Co ngat do timer 0
while(1){
hienthi();
}}
Bi 4: Vit chng trnh to mt xung vung c tn s 5KHz s dng timer?
#include<reg52.h>
sbit F=P1^1;
void main(void)
{TMOD=0x02;//tiemr 0 che do 2
TH0=-20;// he so chia la 100
TR0=1;
while(1)//vonglap vo han
{
while(!TF0);//cho co
TF0=0;//xoa co tran
44 | P a g e
F=~F;//dao muc
}}
S mch:
#include<reg52.h>
sbit xung1=P1^0;
sbit xung2=P1^1;
sbit xung3=P1^2;
void main(void)
{ TMOD=0x02;
RCAP2H=-250;
TR2=1;
IE=0xaa;
IP=0;
TMOD=0x22;
TH0=-50;
TR0=1;
TH1=-150;
45 | P a g e
TR1=1;
}
void ngat_T0(void) interrupt 1
{xung1=~xung1;}
void ngat_T1(void) interrupt 3
{xung2=~xung2;}
void ngat_T2(void) interrupt 5
{xung3=~xung3;}
Bi 6: Vit chng trnh s dng timer to xung vung c rng xung thay i
t 20% n 80%?
#include <REGX51.H>
sbit xung=P1^1;
unsigned int x,dem;i;
void delay(){
for(i=0;i<1000;i++);}
void Ngat_T0(void) interrupt 1{
dem++;
if(dem>=255)
dem=0;
if(dem<x)
xung=1;
else
46 | P a g e
xung=0;}
void main(void){
IE=0x82;
TMOD=0x02;
IP=0;
TR0=1;
TH0=-50;
while(1){
for(x=51;x<204;x++)
{delay();}}}
S mch
47 | P a g e
#include <REGX51.H>
char M[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
long i,s1,s2,s3,s4,s5,s6,j,n;
void delay(void) {
for(n=0;n<100;n++);}
void hienthi(long s)
{ s1=s/100000;
s2=(s%100000)/10000;
s3=(s%10000)/1000;
s4=(s%1000)/100;
s5=(s%100)/10;
s6=s%10 ;
P3=0x01;P2=M[s1]; delay();
P3=0x02;P2=M[s2]; delay();
P3=0x04;P2=M[s3]; delay();
P3=0x08;P2=M[s4]; delay();
P3=0x10;P2=M[s5]; delay();
P3=0x20;P2=M[s6]; delay();}
void main(void){
while(1){
for(i=12345;i<45678;i++) {
hienthi(i);
}}}
#include <reg52.h>
unsigned int i,k;
unsigned long S1,S2,S3,S4,S5,S6,S7,S8,j;
unsigned long M[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
void delay(void)
{for(i=0;i<300;i++);}
void hienthi(unsigned long S0)
{ S1= S0/10000000;
S2=(S0%10000000)/1000000;
S3=(S0%1000000)/100000;
S4=(S0%100000)/10000;
S5=(S0%10000)/1000;
S6=(S0%1000)/100;
S7=(S0%100)/10;
S8=S0%10;
P2=0x01;P1=M[S1]; delay();
P2=0x02;P1=M[S2]; delay();
P2=0x04;P1=M[S3]; delay();
P2=0x08;P1=M[S4]; delay();
P2=0x10;P1=M[S5]; delay();
P2=0x20;P1=M[S6]; delay();
P2=0x40;P1=M[S7]; delay();
P2=0x80;P1=M[S8]; delay(); }
void main (void)
{ while (1)
49 | P a g e
{for(j=12345678;j<23456789;j++)
{for(k=0;k<10;k++)
{hienthi(j);}}}}
S mch:
Bi 9: Vit chng trnh qut Matrix LED 8x8 hin th ch DAI HOC THANH
DO?
#include<reg52.h>
#include<delay.h>
unsigned int i,n,j,k,m;
unsigned char code h[13][8]={
0xff,0x00,0x00,0x3c,0x3c,0x00,0x81,0xff , // D
0xff,0x03,0x01,0xcc,0xcc,0x01,0x03,0xff , // A
0xff,0x3c,0x3c,0x00,0x00,0x3c,0x3c,0xff , // I
0xff,0x00,0x00,0xe7,0xe7,0x00,0x00,0xff , //H
0xff,0x81,0x00,0x3c,0x3c,0x00,0x81,0xff , // O
50 | P a g e
0xff,0x81,0x00,0x3c,0x3c,0x3c,0x3c,0xff ,//C
0xff,0xfc,0xfc,0x00,0x00,0xfc,0xfc,0xff , // T
0xff,0x00,0x00,0xe7,0xe7,0x00,0x00,0xff , //H
0xff,0x03,0x01,0xcc,0xcc,0x01,0x03,0xff , // A
0xff,0x00,0x00,0xf9,0xf3,0x00,0x00,0xff , //N
0xff,0x00,0x00,0xe7,0xe7,0x00,0x00,0xff , //H
0xff,0x00,0x00,0x3c,0x3c,0x00,0x81,0xff , // D
0xff,0x81,0x00,0x3c,0x3c,0x00,0x81,0xff // O
};
void main(void)
{
while(1)
{
for(j=0;j<13;j++)
for(m=0;m<30;m++)
for(k=0;k<8;k++)
{ P3=0xff;
P2=1<<k;
P3=h[j][k];
delay_us(150);}}}
S mch:
51 | P a g e
Bi 10: Vit chng trnh qut Matrix LED 8x8 hin th tt c cc ch ci trong
bng ch ci ting Anh?
#include<reg52.h>
#include<delay.h>
unsigned int i,j,k,m;
unsigned char code h[26][8]={
0xff,0x03,0x01,0xcc,0xcc,0x01,0x03,0xff , // A
0xff,0x00,0x00,0x24,0x24,0x81,0xff,0xff , //B
0xff,0x81,0x00,0x3c,0x3c,0x3c,0x3c,0xff ,//C
0xff,0x00,0x00,0x3c,0x3c,0x00,0x81,0xff , // D
0xff,0x00,0x00,0x24,0x24,0x24,0x24,0xff , // E
0xff,0x00,0x00,0xe4,0xe4,0xe4,0xe4,0xff , // F
0xff,0x81,0x00,0x3c,0x2c,0x0c,0x8d,0xff , // G
0xff,0x00,0x00,0xe7,0xe7,0x00,0x00,0xff , //H
0xff,0x3c,0x3c,0x00,0x00,0x3c,0x3c,0xff , // i
0xff,0x3c,0x3c,0x00,0x80,0xfc,0xfc,0xff , // J
0xff,0x00,0x00,0xc3,0x99,0x3c,0x7e,0xff , // K
0xff,0x00,0x00,0x3f,0x3f,0x3f,0x3f,0xff , // L
0xff,0x00,0x00,0xf9,0xf3,0xf9,0x00,0x00 , // M
0xff,0x00,0x00,0xf9,0xf3,0x00,0x00,0xff , //N
0xff,0x81,0x00,0x3c,0x3c,0x00,0x81,0xff , // O
0xff,0x00,0x00,0xe4,0xe4,0xe0,0xf1,0xff , // P
0xff,0x81,0x00,0x3c,0x1c,0x00,0x81,0xbf , // Q
0xff,0x00,0x00,0xe4,0xc4,0x90,0x39,0xff , // R
0xff,0x20,0x20,0x24,0x04,0x04,0xff,0xff , // S
0xff,0xfc,0xfc,0x00,0x00,0xfc,0xfc,0xff , // T
0xff,0x00,0x00,0x3f,0x3f,0x00,0x00,0xff , // U
0xff,0xc0,0x80,0x3f,0x3f,0x80,0xc0,0xff , // V
0xc0,0x80,0x1f,0x80,0x80,0x1f,0x80,0xc0 , // W
0x7c,0x39,0x93,0xc7,0xc7,0x93,0x39,0x7c , // X
0xff,0xf0,0xe0,0x07,0x07,0xe0,0xf0,0xff , // Y
0xff,0x3c,0x1c,0x0c,0x24,0x30,0x38,0xff }; // Z
52 | P a g e
void main(void)
{
while(1)
{
for(j=0;j<26;j++)
for(m=0;m<30;m++)
for(k=0;k<8;k++)
{ P3=0xff;
P2=1<<k;
P3=h[j][k];
delay_us(100);}}}
S mch:
53 | P a g e