Tải bản đầy đủ - 0 (trang)
Chương trình vi điều khiển

Chương trình vi điều khiển

Tải bản đầy đủ - 0trang

#define CTHT51



RA5



#define CTHT52



RA6



#define XANH



RA0



#define DO



RA1



#define VANG RA2

#define XOAYTRAI RC1

#define XOAYPHAI RC2

#define DC2LEN



RC3



#define DC2XUONG RC4

#define DC3LEN



RC5



#define DC3XUONG RC6

#define THUAN4



RD4



//canh gat 1 quay ve



#define NGHICH4



RD3



//canh gat 1 quay ra gat sp mau XANH



#define THUAN5



RD2



//canh gat 2 quay ve



#define NGHICH5



RD1



//canh gat 2 quay ra gat sp mau DO



void main()

{

nut1 = 0;

nut2 = 0;

nut3 = 0;

nut4 = 0;

nut5 = 0;

nut6 = 0;

nut7 = 0;

79



nut8 = 0;

nut9 = 0;

ANSEL = ANSELH = 0;

TRISC = 0x00;

TRISB = 0xFF;

TRISA = 0xFF;

TRISE0 = 0;

TRISE1 = 0;

TRISE2 = 0;

STROBE = 0;

DATA = 0;

CLK = 0;

TRISD1 = 0;

TRISD2 = 0;

TRISD3 = 0;

TRISD4 = 0;

//cau hinh pull-up

WPUB6 = 1;

WPUB5 = 1;

WPUB4 = 1;

WPUB3 = 1;

WPUB2 = 1;

WPUB1 = 1;

WPUB0 = 1;

RBPU = 0;

IOCB = 0x01;



//Cho phep ngat OnChange tren chan RB0

80



INTEDG = 0;



//Ngat canh xuong



//Cau hinh ngat on-change

RBIF = 0;

RBIE = 1;

GIE = 1;



//cho phep ngat toan cuc



while(1){



// Phan canh tay hoat dong

if (!CTHT22 && !nut1 && !CTHT32 && !CTHT12){ //tu vi tri ban dau

PORTC = 0;

DC2XUONG = 1;



//DC2 xuong



nut1 = 1;

} else if(CTHT22){

nut1 = 0;

}

if (!CTHT21 && !nut2 && !CTHT32 && !CTHT12){ //CTHT21 DONG

PORTC = 0;



//ngung DC2



DC3XUONG = 1;



//DC3 xuong (kep sp)



nut2 = 1;

} else if(CTHT21){

nut2 = 0;

}

81



if (!CTHT31 && !nut3 && !CTHT21 && !CTHT12){ //CTHT31 DONG

PORTC = 0;



//ngung DC3



DC2LEN=1;



//DC2 len



nut3 = 1;

} else if(CTHT31){

nut3 = 0;

}

if (!CTHT22 && !nut4 && !CTHT31 && !CTHT12){//CTHT22 DONG

PORTC = 0;



//ngung DC2



XOAYPHAI=1;



//DC1 xoay phai 90 do



nut4 = 1;

} else if(CTHT22){

nut4 = 0;

}

if (!CTHT11 && !nut5 && !CTHT31 && !CTHT22){ //CTHT11 DONG

PORTC = 0;



//ngung DC1



DC2XUONG=1;



//DC2 xuong



nut5 = 1;

} else if(CTHT11){

nut5 = 0;

}

if (!CTHT21 && !nut6 && !CTHT31 && !CTHT11){ //CTHT21 DONG

PORTC = 0;



//ngung DC2



DC3LEN=1;



//DC3 len



nut6 = 1;

82



} else if(CTHT21){

nut6 = 0;

}

if (!CTHT32 && !nut7 && !CTHT21 && !CTHT11){ //CTHT32 DONG

PORTC = 0;



//ngung DC3



DC2LEN=1;



//DC2 len



nut7 = 1;

} else if(CTHT32){

nut7 = 0;

}

if (!CTHT22 && !nut8 && !CTHT32 && !CTHT11){ //CTHT22 DONG

PORTC = 0;



//ngung DC2



XOAYTRAI=1;



//DC1 xoay trai 90 do



nut8 = 1;

} else if(CTHT22){

nut8 = 0;

}

if (!CTHT12 && !nut9 && !CTHT32 && !CTHT22){ //CTHT12 DONG

PORTC = 0;

DC2XUONG=1;



//ngung DC1

//DC2 xuong



nut9 = 1;

} else if(CTHT12){

nut9 = 0;

}

/* phan Cam Bien hoat dong (0=quay, 1=ngung)

va dieu khien canh gat SP

*/

83



if (!XANH && DO && VANG){



// Cam Bien phat hien SP mau XANH



X = X + 1;



// so SP XANH



RD3 = 0;



// canh gat 1 quay ra gat sp mau XANH



}

if (!CTHT41){



//CTHT41 dong



RD3 = 1;



// canh gat 1 ngung



_delay(5000);

RD4 = 0;



// canh gat 1 quay ve



}else if (!CTHT42){



// CTHT42 dong



RD4 = 1;



// canh gat 1 ngung



}

if (!DO && XANH && VANG){ // Cam Bien phat hien SP mau DO

D = D + 1;



// so SP DO



RD1 = 0;



// canh gat 2 quay ra gat sp mau DO



}

if (!CTHT51){



// CTHT51 dong



RD1 = 1;



// canh gat 2 ngung



_delay(5000);

RD2 = 0;



// canh gat 2 quay ve



}else if (!CTHT52){



// CTHT52 dong



RD2 = 1;



// canh gat 2 ngung



}

if (!VANG && XANH && DO){



// Cam Bien phat hien SP mau VANG



V = V + 1;



// so SP VANG



_delay(10000);



// 2 canh gat ko quay



}

TC = X + D + V;



// so SP TONGCONG

84



//phan chuong trinh hien thi

sspi(getVal(TC,0));

sspi(getVal(TC,1));

sspi(getVal(TC,2));

sspi(getVal(V,0));

sspi(getVal(V,1));

sspi(getVal(D,0));

sspi(getVal(D,1));

sspi(getVal(X,0));

sspi(getVal(X,1));

STROBE = 1;

NOP();

STROBE =0;



}

}

//chuong trinh ngat dua canh tay ve vi tri loop tu 1 vi tri bat ky cua canh tay

void interrupt ViTriLoop()

{

if (RBIE && RBIF){

RBIF = 0;

if (RB3 && !RB6 && !RB2){

PORTC = 0;

RC4 = 1;

}

if (RB5 && !RB3 && !RB2){

85



PORTC = 0;

RC6 = 1;

}

if (RB4 && !RB2 && !RB5){

PORTC = 0;

RC3 = 1;

}

if (RB1 && !RB4 && !RB5){

PORTC = 0;

RC2 = 1;

}

if (RB3 && !RB1 && !RB5){

PORTC = 0;

RC4 = 1;

}

if (RB6 && !RB1 && !RB3){

PORTC = 0;

RC5 = 1;

}

if (RB4 && !RB1 && !RB6){

PORTC = 0;

RC3 = 1;

}

if (RB2 && !RB4 && !RB6){

PORTC = 0;

RC1 = 1;

}

}

}

void delay_ms (int ms) // chuong trinh delay

86



{

int i;

for (i=0;i
_delay(1000);

}

}

char getVal(int v,char offset)

{

char temp;

switch(offset){

case 3:

temp = v/1000;

break;

case 2:

temp = v%1000;

temp/=100;

break;

case 1:

temp = v%100;

temp/=10;

break;

case 0:

temp = v%10;

}

return LedCode[temp];

}

void sspi(char data)

{

char i;

for(i=0;i<8;i++) {

87



if(data & (0x80>>i)) DATA = 1;

else DATA = 0;

CLK = 1;



//trigger clock from low to high



NOP();

CLK = 0;

}

}

2. Chương trình visual basic

Dim Led1 As Boolean

Dim Led2 As Boolean

Dim Str As String

Private Sub cmdLed1_Click()

If Led1 Then

MSComm1.Output = Chr$(&H11)



'bat led



Led1 = False

Else

MSComm1.Output = Chr$(&H10)

Led1 = True

End If



End Sub

Private Sub cmdLed2_Click()

If Led2 Then

MSComm1.Output = Chr$(&H21)

Led2 = False

Else

MSComm1.Output = Chr$(&H20)

88



'bat led



Led2 = True

End If

End Sub



Private Sub Form_Load()

MSComm1.CommPort = 2

MSComm1.Settings = "19200,n,8,1"

MSComm1.PortOpen = True

End Sub



Private Sub MSComm1_OnComm()

If (MSComm1.CommEvent = comEvReceive) Then

txtRecv.Text = Trim(txtRecv.Text) + MSComm1.Input

End If

End Sub



89



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Chương trình vi điều khiển

Tải bản đầy đủ ngay(0 tr)

×