̳ , , MCS-51 EV8031, , .
, , Ѳ. , , , MCS-51 EV8031; EV8031 MCS-51.
Keil uVisioun3.
1.1. ̳ 8051
1.1.1. 8051
8051 . 1.1.
. 1.1. 8051
8051 - , (CPU). , ' , 8051. / P1 - P3, . (EA, ALE, PSEN, RD / WR) ' , / RST.
̳ 8051 , , . ( ) , , .
8051 , . 8051 ( , '), 8052, .
̳ 8051 , , . 1.2.
. 1.2. 8051
8051 :
XTAL XTAL2 - ;
PSEN - , ' ;
ALE - ' / ;
|
|
EA - , ';
RST - ;
P0 - P3 - / ;
Vss Vcc - .
P0, P2 P3 / , , . , P0 ' 8 16- , , / , . P2 ' 8 16- .
P3 8051 :
P3.0 - ;
P3.1 - ;
P3.2 - INT0;
P3.3 - INT1;
P3.4 - 0;
P3.5 - 1;
P3.6 - ';
P3.7 - '.
P3 8051.
1.1.2. 8051
̳ 8051 ': ' ' . ' ( on $ chip) '. - 8051 ' .
' , (EPROM), (EEPROM) $ '. EPROM EEPROM, . 8051 ' ', , ' , .
' ' , , .
' ', 64 , 16- . ' , 8051, 4, 8 16 . ' , , .. ' 16- . (PC), $ (DPTR). DPTR .
' 8051 . 1.3.
. 1.3. ' 8051
(on-chip) ' 8051. ' : 128 ', (Special Function Registers, SFR). , . 1.4.
|
|
. 1.4.
, , . ' 8051 , 0x20 0x2F. , 128- SETB CLR. , 0x0 0x7F. , ', '.
0x20, λ.
8051 4 . 0.
R0 0x00, R1 - 0x01, , R7 0 0x07. , , 1, R0 0x08, R1 - 0x09 R7 - 0x0F.
0x80 (. 1.5).
(Special Function Registers, SFR) , , / , , . , , . . 1.1
. 1.5.
1.1.
- | OFOH | |
PSW | ODOH | |
SP | - | 81H |
DPTR | - (DPH) | 83H |
(DPL) | 82H | |
P0 | 0 | 80H |
P1 | 1 | 90H |
P2 | 2 | OAOH |
P3 | 3 | OBOH |
IP | OB8H | |
IE | OA8H | |
TMOD | / | 89H |
TCON | / | 88H |
TH0 | 0 ( ) | 8CH |
TL0 | 0 ( ) | 8AH |
TH1 | 1 ( ) | 8DH |
TL1 | 1 ( ) | 8BH |
SCON | 98H | |
SBUF | 99H | |
PCON | 87H |
. , .
8051 , , . 8051, . 1.15.
8051 5 : , , - INT0 ( P3.2) INT1( P3.3); - 0 1; (. . 1.6). .
. 1.6. 8051
, , , . 1.1. , INT0 ( 1 . 1.1), 0 INT0 ( 2) .. 8051 ( 5 ). 8052 2 ( 6). IP.
|
|
̳ , TCON.
- , IE.
, INT0 INT1
8051. INT0 INT1 1 0 IT0 IT1 TCON. ITx (x = 0,1), 1-0 INTx . , INTx .
INTx IEx TCON, ,-, . IEx , INTx. INTx , IEx $ .
INT0 INT1 ( ) :
;
P3.2 / P3.3;
IE0 IE1.
(TH0 - TL0 0, TH1 - TL1 1 TH2 - TL2 2). 0xFF THx - TLx (x = 1, 2, 3) TFx, . 0 1 TCON, TF0 TCON.5, TF1 - TCON.7.
TF0 TF1 .
- TI RI (. . 1.1). RI TI , . , . , .
. , . LCALL $ , :
, ;
;
RETI - , - IE IP.
|
|
, , , .
/ 8051 8- / , P0- P3 , .
-, . / . 1.7.
. 1.7. /
P0 , P1 - P3 - , . - , . / .
P0 P2 , ', ' / , . / P0 . 1.8.
. 1.8. / P0
P0 , . 1.12, / . P0 / 10 (. 1.9).
. 1.9. 0 /
P0 , . P1 - P3 , P0. / P1 - P3 .1.10.
. 1.10. / P1 - P3
P1 - P3 , ' , , P0, . 0 2, 0 '. 0 , . 2 , 16 .
P1, P2 P3 , P0, / , , P0. P0, P1, P2 P3 .
P3 . ֳ - (P3.0 - P3.7) P3.
/ , , . , , , --. , $ , . :
ANL - , : ANL P1, ;
ORL - λ, : ORL P2, ;
XRL - λ, : XRL 3, ;
JBC - , : JBC P1.1, LABEL;
CPL - , : CPL 3.3;
INC - , : INC P2;
DEC - , : DEC P2;
DJNZ - , : DJNZ P1, LABEL;
MOV PX.Y, C - C Y X;
SET PX.Y - Y X;
CLR PX.Y - Y X.
/ 8051 , , .
|
|
1.2.1 Բֲ в
. , , . , , .
:
;
;
;
,
- .
:
;
;
;
;
;
³ .
, .
1.2.2 ²
䳿 , . ( 1.11) , - ֲ.
. 1.11
, , , - . ³ ( ), , . , .
- .
1.2.3 Ͳ
1.2.4
, . :
1. ' ();
2. .
. , ' , . , , , , . . . 1.12
1.12
, V1 , R1, R2 R3. - V2, u (t). ij,
,
V2. , . , . u 1(t) .
, , '. , .
. .1.13 1. V1 , V2 , .
. 1.13
.
:
.
V1,V2. V2, . , 0 R2 , V2. V2 .
R2 , V2 , .
.1.14
1.3
1.3.1 в
. - , Ux (. 1.15).
. 1.15
г
,
Nk , ;
Δ U ;
;
N () .
, , . , , . ,
,
.
, , = . , , , , .
- () - . . , , 䳿.
. . n- 2n-1 , 2n-1 .
. . , . , - () . 1.16
. 1.16
, , , . . . Ux. , , 'Stop' . . . , . .
. . . , , . . , .
. . , . . , , . AD7801 ( ) LM358 ( ) ( 1.17). 1.7 , . 0x8000h 0x8002h .
Ux ( J5), .
. 1.17 -8051
1.3.2 ² в
- Uk : Ux - N(1) . N(1) , .
(. 1.18) , , , - . - . SW, . ∆Uk. t1 Uk= Ux= U1 SW, .
qu uk , N1=u1/qu
. 1.18 .
1.3.3 ί в
: δ, δ . , -, δ .
. N Nx , , ∆.=0 qx. , - xk 99 100 k, Nx, 99. ³, .
γ= qx/x∙100=100/ N. , 1/2qx , Nqx 1/2qx. , N=98 xk=98qx+qx/2. 97,5qx 98,5qx, Nk=98. qx/2.
2.1 ˲ֲ
ϳ INT0
ϳ INT1
ϳ vivod
#include<reg51.h> | Keil |
unsigned char xdata *DAC_LO=0x8000; | DAC_LO 8000- |
unsigned char xdata *DAC_HI=0x8002; | DAC_HI 8002- |
unsigned char xdata *PRT=0x8003; | PRT 8003- |
unsigned char xdata *HI=0xA000; | HI A000- |
unsigned char xdata *LI=0xB000; | LI 000- |
unsigned int mode,min,max,s3,m3,s2,m2,s1,m1; | () |
sbit p=P1^7; | 7 1 |
void moda() interrupt 1 using 1 { | ϳ INT0, moda, |
If (mode<3) { | mode |
mode++; } | mode |
else { | mode>3, 䳿 |
mode=0; }} | mode |
void nol() interrupt 2 using 1 { | ϳ INT1, nol, |
max=0; | max, ( max) |
min=0xFFFF; } | min FFFF, ( min) |
void vivod(unsigned int x) { | ϳ |
s3=x/1000; | , , |
m3=x%1000; | |
s2=m3/100; | |
m2=m3%100; | |
s1=m2/10; | |
m1=m2%10; | |
x=(s3<<12)+(s2<<8)+(s1<<4)+m1; | |
*LI=x&0x00FF; | |
*HI=(x&FF00)>>8; } | 9- 10- |
void main() { | |
unsigned int i,j,sum,Res,k; | |
IE=0x85; | IE ( INT1 i INT0) |
TCON=0x5; | TCON ( , ) |
*PRT=0x80; | ϳ |
while(1) { | |
for (i=0;i<1024;i++) { | , 0 1024 |
*DAC_LO=i&0xFF; | ³ 8- ( () 1111 1111) |
*DAC_HI=(i&0x300)>>8; | ³ 9- 10- ( 11 0000 0000) |
for(j=0;j<1;j++) {} | , , |
if (p==0) { | ( , 0, , ) |
if (k<=20) { | k |
sum=sum+i; | sum, , sum |
k=k+1; } | k k |
else { | k>22, 䳿 |
Res=sum/20; | ij sum 22( ) Res |
k=0; | k |
sum=0; } | sum |
if (Res<min) { | Res, |
min=Res; } | Res |
if (Res>max) { | Res, |
max=Res; } | Res |
for (j=0;j<100;j++) {} | , |
i=0; | |
Switch (mode) { | , mode |
case 0: { | , , mode 0, 䳿 |
vivod (Res); | Res |
break; } | case |
case 1: { | , , mode 1, 䳿 |
vivod (min); | min |
break; } | case |
case 2: { | , , mode 2, 䳿 |
vivod (max); | max |
break; } | case |
default: { | , , mode 0,1,2, 䳿 |
vivod (Res); | Res |
break; } } | default |
}}}} |
ϳ , , , , 8051, Ѳ, , , - , Keil uVisioun3.
: MCS-51 EV8031 20- , , INT1, INT0. , , , (, .)
28 , : , , ; 17 , .