Đăng  trả lời 
 
Đánh giá chủ đề:
  • 1 Votes - 2 Average
  • 1
  • 2
  • 3
  • 4
  • 5
học lập trình c với vdk
23-04-2011, 10:31 PM (Được chỉnh sửa: 27-04-2011 09:07 PM bởi depham.)
Bài viết: #1
học lập trình c với vdk
mọi người vào đây để học hỏi cùng nhau chia sẻ kiến thức nhaBrick
/* BAI TAP THUC HANH LAP TRINH C CHO VI DIEU KHIEN HO VDK 8051
TEN BAI : dieu khien 8 led don sang tu trai sang phai
LOAI CHIP: AT89C51
CACH VIET : 3 CACH VIET :XET TUNG BIT ;DUNG MANG ;DUA DIA CHI VAO CONG.....
CACH 1 : XU LI TUNG BIT
SVTH: PHAM VAN DE ; MSSV:08T1051066 ;MAIL:depham@GMAIL.COM ; DTDT :0979375877
DATE:26/03/2011

Mã:
/********************** BO TIEN XU LI************************/
//#include <AT89X51.H>// KHAI BAO THU VIEN
#include <REGX51.H>


#define DO 1
#define TAT 0

/**********************KHAI BAO BIEN TOAN CUC *****************/                                
sbit  LED1=P1^0;
sbit  LED2=P1^1;
sbit  LED3=P1^2;
sbit  LED4=P1^3;
sbit  LED5=P1^4;
sbit  LED6=P1^5;
sbit  LED7=P1^6;
sbit  LED8=P1^7;

/********************* CHUONG TRINH TAO HAM CON ******************/

void delay (long time )
{     long i;
for(i=0;i<time;i++)
    { ;
    }
}


/*********************** HAM CHINH**********************************/
void main(void)
{
while(1)
{
LED1=DO;
delay(1000);
LED1=TAT;
delay(1000);
LED2=DO;
delay(1000);
LED2=TAT;
delay(1000);
LED3=DO;
delay(1000);
LED3=TAT;
delay(1000);
LED4=DO;
delay(1000);
LED4=TAT;
delay(1000);
LED5=DO;
delay(1000);
LED5=TAT;
delay(1000);
LED6=DO;
delay(1000);
LED6=TAT;
delay(1000);
LED7=DO;
delay(1000);
LED7=TAT;
delay(1000);
LED8=DO;
delay(1000);
LED8=TAT;
delay(1000);
  }
  }
// CHU Y:NO KHONG TU DONG XOA VE MUC O KHI QUA BIT KHAC CAI NAY KHAC VOI DUNG MANG
[img]http://i1201.photobucket.com/albums/bb350/phamvande/cooltext515576681-1.gif[/img]
Tìm tất cả bài viết của thành viên này
Add Thank You Trích dẫn bài này trong bài trả lời
24-04-2011, 06:38 AM
Bài viết: #2
RE: học lập trình c với vdk
Bác Đê có tài liệu chi hay, dễ hiểu cho mình xin tham khảo với !! cám ơn bác Đê nhìu !!
[img]http://r9.fodey.com/2154/7e4e665c8cd54338b1d8e43278274126.0.gif[/img]
Tìm tất cả bài viết của thành viên này
Add Thank You Trích dẫn bài này trong bài trả lời
24-04-2011, 08:23 AM
Bài viết: #3
RE: học lập trình c với vdk
Cái này thì dễ hỉu???? miền không hỉu khi dùng mảng thôi ah?? dùng mảng khi dùng nhìu LED wa không thể làm từng cái ri đc???StickStick
Phận làm trai gõ phím bình thiên hạ [img]http://cB5.upanh.com/22.3.28993144.UGz0/hehe.gif[/img] Thân anh hùng click chuột định giang sơn!!! @_@ NO WOMEN
Tìm tất cả bài viết của thành viên này
Add Thank You Trích dẫn bài này trong bài trả lời
24-04-2011, 10:25 AM (Được chỉnh sửa: 27-04-2011 09:08 PM bởi depham.)
Bài viết: #4
RE: học lập trình c với vdk
về phần mảng thì mình cũng trả lời cho bạn nào đó trên 4rum rồi mà...mình cũng post lên rồi ,,ko thì mình post lại cho ...
/* BAI TAP THUC HANH LAP TRINH C CHO VI DIEU KHIEN HO VDK 8051
TEN BAI : dieu khien 8 led don sang dan tu trai sang phai
LOAI CHIP: AT89C51
CACH VIET : 3 CACH VIET :DUNG MANG ;DUA DIA CHI VAO CONG.,phep cong....
cach 1 :cach dung mang
SVTH: PHAM VAN DE ; MSSV:08T1051066 ;MAIL:depham90@GMAIL.COM ; DTDT :0979375877
DATE: 26/03/2011

Mã:
/********************** BO TIEN XU LI************************/
#include <AT89X51.H>// KHAI BAO THU VIEN  

/**********************KHAI BAO BIEN TOAN CUC *****************/
unsigned char diachi[9]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff,0x00};    // chu y la phai co diachi=0x00 (tat het) roi cho lap lai ko thoi la led1 luon sang

/********************* CHUONG TRINH TAO HAM CON ******************/
void delay(long time)
{  long k;
for(k=0;k<time;k++)
{;};
}
/*********************** HAM CHINH**********************************/
void main()
{ unsigned char    i;

while(1)
{
for (i=0;i<9;i++)
{  P1=diachi[i];
  delay(10000);
}
}
}
Tìm tất cả bài viết của thành viên này
Add Thank You Trích dẫn bài này trong bài trả lời
24-04-2011, 10:40 AM
Bài viết: #5
RE: học lập trình c với vdk
a e lập trình tải phần mềm keilc v4 có crack và hướng dẫn nữa đó..http://codientubkdn.com/4rum/a/2641-keil-c-4-ae-y-ma-i-dza-ma-i-dza.html


giao diện đẹp mà lại đã update thêm một số linh kiện nữa đó..
a e tải về mà dùng nghe..mình đang dùng thấy rất dễ cho a e lập trình đó..
cái này kết hợp với mô phỏng proteusV7,7 là ngon luôn...Brick
Tìm tất cả bài viết của thành viên này
Add Thank You Trích dẫn bài này trong bài trả lời
[-] The following 1 user says Thank You to depham for this post:
huavanlamk72
24-04-2011, 12:00 PM
Bài viết: #6
RE: học lập trình c với vdk
Chú Đê cho miền cái địa chỉ của tất cả các cổng ra lun với??? cái ni miền không hỉu nơiPlasterPlasterPlaster
Tìm tất cả bài viết của thành viên này
Add Thank You Trích dẫn bài này trong bài trả lời
24-04-2011, 12:50 PM
Bài viết: #7
Music RE: học lập trình c với vdk
Do ko cho phép đính kèm file, nên up luôn nd, đọc cái ni là hiểu

Trích dẫn:/*--------------------------------------------------------------------------
AT89X52.H

Header file for the low voltage Flash Atmel AT89C52 and AT89LV52.
Copyright © 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/

#ifndef __AT89X52_H__
#define __AT89X52_H__

/*------------------------------------------------
Byte Registers
------------------------------------------------*/
sfr P0 = 0x80;
sfr SP = 0x81;
sfr DPL = 0x82;
sfr DPH = 0x83;
sfr PCON = 0x87;
sfr TCON = 0x88;
sfr TMOD = 0x89;
sfr TL0 = 0x8A;
sfr TL1 = 0x8B;
sfr TH0 = 0x8C;
sfr TH1 = 0x8D;
sfr P1 = 0x90;
sfr SCON = 0x98;
sfr SBUF = 0x99;
sfr P2 = 0xA0;
sfr IE = 0xA8;
sfr P3 = 0xB0;
sfr IP = 0xB8;
sfr T2CON = 0xC8;
sfr T2MOD = 0xC9;
sfr RCAP2L = 0xCA;
sfr RCAP2H = 0xCB;
sfr TL2 = 0xCC;
sfr TH2 = 0xCD;
sfr PSW = 0xD0;
sfr ACC = 0xE0;
sfr B = 0xF0;

/*------------------------------------------------
P0 Bit Registers
------------------------------------------------*/
sbit P0_0 = 0x80;
sbit P0_1 = 0x81;
sbit P0_2 = 0x82;
sbit P0_3 = 0x83;
sbit P0_4 = 0x84;
sbit P0_5 = 0x85;
sbit P0_6 = 0x86;
sbit P0_7 = 0x87;

/*------------------------------------------------
PCON Bit Values
------------------------------------------------*/
#define IDL_ 0x01

#define STOP_ 0x02
#define PD_ 0x02 /* Alternate definition */

#define GF0_ 0x04
#define GF1_ 0x08
#define SMOD_ 0x80

/*------------------------------------------------
TCON Bit Registers
------------------------------------------------*/
sbit IT0 = 0x88;
sbit IE0 = 0x89;
sbit IT1 = 0x8A;
sbit IE1 = 0x8B;
sbit TR0 = 0x8C;
sbit TF0 = 0x8D;
sbit TR1 = 0x8E;
sbit TF1 = 0x8F;

/*------------------------------------------------
TMOD Bit Values
------------------------------------------------*/
#define T0_M0_ 0x01
#define T0_M1_ 0x02
#define T0_CT_ 0x04
#define T0_GATE_ 0x08
#define T1_M0_ 0x10
#define T1_M1_ 0x20
#define T1_CT_ 0x40
#define T1_GATE_ 0x80

#define T1_MASK_ 0xF0
#define T0_MASK_ 0x0F

/*------------------------------------------------
P1 Bit Registers
------------------------------------------------*/
sbit P1_0 = 0x90;
sbit P1_1 = 0x91;
sbit P1_2 = 0x92;
sbit P1_3 = 0x93;
sbit P1_4 = 0x94;
sbit P1_5 = 0x95;
sbit P1_6 = 0x96;
sbit P1_7 = 0x97;

sbit T2 = 0x90; /* External input to Timer/Counter 2, clock out */
sbit T2EX = 0x91; /* Timer/Counter 2 capture/reload trigger & dir ctl */

/*------------------------------------------------
SCON Bit Registers
------------------------------------------------*/
sbit RI = 0x98;
sbit TI = 0x99;
sbit RB8 = 0x9A;
sbit TB8 = 0x9B;
sbit REN = 0x9C;
sbit SM2 = 0x9D;
sbit SM1 = 0x9E;
sbit SM0 = 0x9F;

/*------------------------------------------------
P2 Bit Registers
------------------------------------------------*/
sbit P2_0 = 0xA0;
sbit P2_1 = 0xA1;
sbit P2_2 = 0xA2;
sbit P2_3 = 0xA3;
sbit P2_4 = 0xA4;
sbit P2_5 = 0xA5;
sbit P2_6 = 0xA6;
sbit P2_7 = 0xA7;

/*------------------------------------------------
IE Bit Registers
------------------------------------------------*/
sbit EX0 = 0xA8; /* 1=Enable External interrupt 0 */
sbit ET0 = 0xA9; /* 1=Enable Timer 0 interrupt */
sbit EX1 = 0xAA; /* 1=Enable External interrupt 1 */
sbit ET1 = 0xAB; /* 1=Enable Timer 1 interrupt */
sbit ES = 0xAC; /* 1=Enable Serial port interrupt */
sbit ET2 = 0xAD; /* 1=Enable Timer 2 interrupt */

sbit EA = 0xAF; /* 0=Disable all interrupts */

/*------------------------------------------------
P3 Bit Registers (Mnemonics & Ports)
------------------------------------------------*/
sbit P3_0 = 0xB0;
sbit P3_1 = 0xB1;
sbit P3_2 = 0xB2;
sbit P3_3 = 0xB3;
sbit P3_4 = 0xB4;
sbit P3_5 = 0xB5;
sbit P3_6 = 0xB6;
sbit P3_7 = 0xB7;

sbit RXD = 0xB0; /* Serial data input */
sbit TXD = 0xB1; /* Serial data output */
sbit INT0 = 0xB2; /* External interrupt 0 */
sbit INT1 = 0xB3; /* External interrupt 1 */
sbit T0 = 0xB4; /* Timer 0 external input */
sbit T1 = 0xB5; /* Timer 1 external input */
sbit WR = 0xB6; /* External data memory write strobe */
sbit RD = 0xB7; /* External data memory read strobe */

/*------------------------------------------------
IP Bit Registers
------------------------------------------------*/
sbit PX0 = 0xB8;
sbit PT0 = 0xB9;
sbit PX1 = 0xBA;
sbit PT1 = 0xBB;
sbit PS = 0xBC;
sbit PT2 = 0xBD;

/*------------------------------------------------
T2CON Bit Registers
------------------------------------------------*/
sbit CP_RL2= 0xC8; /* 0=Reload, 1=Capture select */
sbit C_T2 = 0xC9; /* 0=Timer, 1=Counter */
sbit TR2 = 0xCA; /* 0=Stop timer, 1=Start timer */
sbit EXEN2= 0xCB; /* Timer 2 external enable */
sbit TCLK = 0xCC; /* 0=Serial clock uses Timer 1 overflow, 1=Timer 2 */
sbit RCLK = 0xCD; /* 0=Serial clock uses Timer 1 overflow, 1=Timer 2 */
sbit EXF2 = 0xCE; /* Timer 2 external flag */
sbit TF2 = 0xCF; /* Timer 2 overflow flag */

/*------------------------------------------------
T2MOD Bit Values
------------------------------------------------*/
#define DCEN_ 0x01 /* 1=Timer 2 can be configured as up/down counter */
#define T2OE_ 0x02 /* Timer 2 output enable */

/*------------------------------------------------
PSW Bit Registers
------------------------------------------------*/
sbit P = 0xD0;
sbit FL = 0xD1;
sbit OV = 0xD2;
sbit RS0 = 0xD3;
sbit RS1 = 0xD4;
sbit F0 = 0xD5;
sbit AC = 0xD6;
sbit CY = 0xD7;

/*------------------------------------------------
Interrupt Vectors:
Interrupt Address = (Number * 8) + 3
------------------------------------------------*/
#define IE0_VECTOR 0 /* 0x03 External Interrupt 0 */
#define TF0_VECTOR 1 /* 0x0B Timer 0 */
#define IE1_VECTOR 2 /* 0x13 External Interrupt 1 */
#define TF1_VECTOR 3 /* 0x1B Timer 1 */
#define SIO_VECTOR 4 /* 0x23 Serial port */

#define TF2_VECTOR 5 /* 0x2B Timer 2 */
#define EX2_VECTOR 5 /* 0x2B External Interrupt 2 */

#endif



Tìm tất cả bài viết của thành viên này
Add Thank You Trích dẫn bài này trong bài trả lời
24-04-2011, 04:05 PM
Bài viết: #8
RE: học lập trình c với vdk
cái địa chỉ của từng chân ra cũng dễ mà..là ri nè
mỗi port như thế là có 8 cổng ..vdk nó hoạt động 8bit ..
ban đầu có giá trị là 00000000 tương ứng với giả sử mình chọn ở port 1 đi chẳng hạn (vì các port khác cũng giống thôi..chú ý nhá cái này nha chỗ này là dễ nhằm lắm đó...vì cứ tưởng ở port khác là địa chỉ khác nhau đó nha..)

chú ý địa chỉ ở đây còn phụ thuộc vào phần cứng của mình tạo ra đó..cụ thể là có 2 địa chỉ
tương ứng mức 0 và mức 1
nghĩa là tùy vào mạch điện mình cho mức 0 đèn sáng cũng có thể tắt đó bạn ah...

vào phần chính của câu hỏi ...
giả xử mình thiết lập mạch điện với mức 0 là đèn tắt ,mưc1 đèn sáng
bay giờ ta cho đèn sáng lần lượt từ P1.0 TỚI P1.7 THÌ địa chỉ lần lượt là....
00000001,00000010,00000100,00001000,00010000,00100000,01000000,10000000
đó là để cho dễ hiểu thôi ..chứ trong khi viết code mình đổi sang hệ số hexa viết cho gọn bạn ạ..
sẽ là 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80 ....>>>> cái đổi này mình bấm máy tính bỏ túi thui...
nhớ rằng giờ mình điều khiển cho đèn sáng lần lượt từ Px.0 TỚI Px.7 THÌ địa cũng như trên thôi các bạn ah..trong đó x là 0,1 ,2 ,3...nhớ nhé...
chúc các bạn một chủ nhật vui vẻ..Brick
Tìm tất cả bài viết của thành viên này
Add Thank You Trích dẫn bài này trong bài trả lời
24-04-2011, 05:00 PM
Bài viết: #9
RE: học lập trình c với vdk
bác này viết rất ok, giải thích rõ ràng.
Tìm tất cả bài viết của thành viên này
Add Thank You Trích dẫn bài này trong bài trả lời
24-04-2011, 05:03 PM
Bài viết: #10
RE: học lập trình c với vdk
Hướng dẫn phần đồng hồ số luôn đi bác Đê ơi.Cười, cái đoạn nút nhấn thấy rắc rối quáPudency
Tìm tất cả bài viết của thành viên này
Add Thank You Trích dẫn bài này trong bài trả lời
24-04-2011, 08:30 PM
Bài viết: #11
RE: học lập trình c với vdk
Úi!!! thanks chú Đê với chus Phước nhìu nhìu nghe????GoGoGoGo
Tìm tất cả bài viết của thành viên này
Add Thank You Trích dẫn bài này trong bài trả lời
25-04-2011, 10:26 PM (Được chỉnh sửa: 27-04-2011 09:12 PM bởi depham.)
Bài viết: #12
RE: học lập trình c với vdk
hehe mới viết xong cái code đồng hồ số dùng bộ timer ...post lên cho a e tham khảm nhá..nhưng đây chưa dùng phím nhấn ..vẫn đang tiếp tục phát triển..post lên cho a e xem đã ...
/********************************************************************************​******************
DESIGNED BY:Pham Van De --DHKH--dien tu vien thong k32
MO TA: DONG HO SU DUNG TIMER
KET NOI PHAN CUNG: DATA LED 7 DOAN = P0
P2 QUET LED 7 DOAN; SU DUNG 6 LED 7 DOAN GIO : PHUT : GIAY
led 7segment chung anode
Dieu chinh gio -phut -giay bang cach thay doi code ko dung phim nhan
THACH ANH: 12MHZ
VI DIEU KHIEN: AT89C51
Contact: depham90@gmail.com
thoi gian hoan thanh:26/4/2011

Mã:
/************KHAI BAO THU VIEN, DINH NGHIA********************************************************/
#include <REGX51.H>        
/************KHAI BAO BIEN, MANG...***************************************************************/
unsigned char led7_data[10] = {0x40,0x79,0x24,0x30,0x19,0x12,0x2,0x78,0x0,0x10};       // lan luot tu 0 den 9
unsigned char gio,phut,giay;
unsigned char time, i,index;

/************KHAI BAO HAM, CHUONG TRINH CON*******************************************************/
    // Chuong trinh khoi tao main
void set_main(void);
    // Chuong trinh cai dat timer 1 va 0
void setup_timer(void);
/************CAC CHUONG TRINH CON*****************************************************************/
    // Chuong trinh khoi tao main
void set_main(void)
{
    P1=0x00;
    P0=0x00;
    P2=0x00;
    P3=0xFF;
}
    // Setup timer 0 va timer 1
void setup_timer(void)
{
    TMOD=0x11; // timer 0 che do 1 va timer 1 che do 1: 16bit ko autoreload
    TH0=-1000/256;        //thoi gian quet led                                  
    TL0=-1000%256;
    TH1=0x3C;  // HIGH(-50000)
    TL1=0xB0;//    LOW (-50000)    
    ET1=1;     //su dung bo ngat 1
    ET0=1;      // su dung bo ngat 0
    EA=1;      // cho phep su dung ngat con EA=0 thi cam ngat
    TF0=0;      //khoi tao co tran cua timer 0
    TF1=0;      // khoi tao co tran cua timer 1
    TR0=1;      // bat dau chay  TIMER 0          
    TR1=1;      // bat dau chay TIMER 1
}
    //ngat timer 1 chay dong ho
void T1_ISR(void) interrupt 3
{
    TR1=0;      //
    TF1=0;      // nap lai gia tri cho thanh ghi
    TH1=0x3C; // HIGH(-50000)
    TL1=0xB0; //     LOW (-50000)
    time++;          // Tao vong lap 20 lan
    if(time==20)// 20x50000us = 1s
    {
    time=0;
    giay++;
        if(giay==60)
        {
        giay=0;
        phut++;
        }
        if(phut==60)
        {
        phut=0;
        gio++;
        }
        if(gio==24)
        gio=0;
    }
    TR1=1;           //cho chay lai TIMER 1
}
    // ngat timer 0 de quet led
void T0_ISR(void) interrupt 1
{
    TR0=0;
    TF0=0;
    TH0=-1000/256; // Nap lai gia tri cho thanh ghi
    TL0=-1000%256;
    
    index--;  // de ta quet tu led don vi giay toi led hang chuc cua gio
    if(index==1)
            {    P0=0xff;                  // chu y la phai dong nay rat quan trong do ko thoi la nhay loan so luon
            P0=led7_data[gio/10];          // hien thi gio >>hang chuc
            P2=0x01;                      // cho led nay hien thi
            index=7;                      // khoi tao lai vong lap de quet led
        }
    
    if(index==2)
    
        {    P0=0xff;                      // phai co
            P0=led7_data[gio%10];          // hien thi gio>>> don vi
            P2=0x02;                      // cho led nay hien thi
        }

    if(index==3)
                                           // phai co
        {    P0=0xff;
            P0=led7_data[phut/10];           // hien thi phut>> hang chuc
            P2=0x04;                       // cho led nay hien thi
        }

    if(index==4)
        {                                                  
            P0=0xff;                        //phai co
            P0=led7_data[phut%10];            // hien thi phut >> don vi
            P2=0x08;                        // cho led nay hien thi
        }
    
    if(index==5)
    
        {    P0=0xff;                        // phai co
            P0=led7_data[giay/10];            // hien thi giay>> hang chuc
            P2=0x10;                         // cho led nay hien thi
        }
    
    if(index==6)
    
        {    P0=0xff;                        // phai co
            P0=led7_data[giay%10];            //hien thi giay >>>hang don vi
            P2=0x20;                        // cho led nay hien thi
            
            
                                                                  
        }
        TR0=1;                                //cho chay lai TIMER O
}
/************CHUONG TRINH CHINH*******************************************************************/
void main()
{

{    set_main();
    time=0;
    index=7;
    gio=21;             // chung ta thay doi gio-phut-giay sao cho dung voi thoi gian thuc
    phut=25;
    giay=0;
    setup_timer();
}

  while(1){};  // TAO VONG LAP VO HAN

}
Tìm tất cả bài viết của thành viên này
Add Thank You Trích dẫn bài này trong bài trả lời
25-04-2011, 10:29 PM
Bài viết: #13
RE: học lập trình c với vdk
qua đuổi hình bắt chữ chứ ở đây làm gì vậy chú Đê
Pháp hiệu của bần tăng là:Thích Tiền Đô !
Tìm tất cả bài viết của thành viên này
Add Thank You Trích dẫn bài này trong bài trả lời
25-04-2011, 10:38 PM (Được chỉnh sửa: 25-04-2011 10:39 PM bởi depham.)
Bài viết: #14
RE: học lập trình c với vdk
link mach mo phong đây nè [Hình: ?585cqaqbczjge7h]
Tìm tất cả bài viết của thành viên này
Add Thank You Trích dẫn bài này trong bài trả lời
[-] The following 1 user says Thank You to depham for this post:
vanvu08
25-04-2011, 11:01 PM
Bài viết: #15
RE: học lập trình c với vdk
cái link mô phỏng nưa nè[Hình: 63bd18133b669be6d886bc86163d5122ac9c8104...62a86g.jpg]
Tìm tất cả bài viết của thành viên này
Add Thank You Trích dẫn bài này trong bài trả lời
Đăng  trả lời 






Mã nguồn bởi MyBB, © 2002-2014 MyBB Group.
All content © copyright 2011 Điện Tử Viễn Thông Huế.
Diễn đàn là một hệ thống mở, chúng tôi sẽ không chịu trách nhiệm về nội dung đăng tải do người dùng đưa lên.
Lên trênNội dung