Thông báo

Collapse
No announcement yet.

Điều khiển 8253 (Liên quan đồ án ghép nối với máy tính tạo xung vuông dùng 8253)

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Điều khiển 8253 (Liên quan đồ án ghép nối với máy tính tạo xung vuông dùng 8253)

    Kính thưa các đại cao thủ !
    Em đang làm bài tập lớn về cách tạo xung vuông dùng 8253

    Em đã viết code nhưng không chạy , không bít sai sót từ đâu !
    Kính mong các bác đã và đang tìm hiểu về Timer lập trình được 8253 vào đây chỉ giúp ạ

    Đây là code của em dùng để tạo xung vuông xuất ra chân OUT của Timer 1 !
    Có chỗ nào sai sót cân sửa chữa mong các bạn chi ra giúp mình :
    Code:
    #include<reg52.h>
    #include<stdio.h>
    
    sbit _GATE=P2^0;
    sbit _A0=P2^3;
    sbit _A1=P2^4;
    sbit _WR=P3^6;
    sbit _RD=P3^7;
    unsigned int a;
    
     void delay()
    {
    		unsigned int i;
    		for(i=0;i<=1000;i++);
     }
    
    
     void ghi_CWR(unsigned int manh2)
    {
    	_A0=1;		   
    	_A1=1;
    	_RD=1;
    	_WR=0;	  	 // A0=A1=1 , WR =0 >> Cho phep ghi vao tu dien khien
    
    	P1=manh2;	
    
    }
    
    
     void ghi_T1(unsigned int manh1)
    {
     	
    	_A0=1;
    	_A1=0;
    	_RD=1;
    	_WR=0;		// A0=1, A1=0 , WR = 0 >> Cho phep nap  gia tri vao Timer 1 
    
    	_GATE=1;
    	P1=manh1%256;			   // Truyen Byte Thap truoc
    	delay();
    
    	P1=manh1/256;			  // Truyen byte cao sau 
    	delay();
    
    }
    
    
     void main()
    {
    
    
    ghi_CWR(119);		// Gia su Timer 1 , Mode 3 , dem thap phan ,
                                             truyen byte thap truoc   byte cao sau 
    delay();
    
    ghi_T1(200);	   // Nap gia tri ban dau cho  Timer 1 la 200 (Byte thap 200 , byte cao 0 )
    delay();
    
    _GATE=0;
    _GATE=1;
    
    while(1);  	  
    }
    Còn đây là file ISIS (Em dùng Proteus 7.6 )

  • #2
    Nguyên văn bởi saochangtinh Xem bài viết
    Kính thưa các đại cao thủ !
    Em đang làm bài tập lớn về cách tạo xung vuông dùng 8253

    Em đã viết code nhưng không chạy , không bít sai sót từ đâu !
    Kính mong các bác đã và đang tìm hiểu về Timer lập trình được 8253 vào đây chỉ giúp ạ

    Đây là code của em dùng để tạo xung vuông xuất ra chân OUT của Timer 1 !
    Có chỗ nào sai sót cân sửa chữa mong các bạn chi ra giúp mình :
    Code:
    #include<reg52.h>
    #include<stdio.h>
    
    sbit _GATE=P2^0;
    sbit _A0=P2^3;
    sbit _A1=P2^4;
    sbit _WR=P3^6;
    sbit _RD=P3^7;
    unsigned int a;
    
     void delay()
    {
    		unsigned int i;
    		for(i=0;i<=1000;i++);
     }
    
    
     void ghi_CWR(unsigned int manh2)
    {
    	_A0=1;		   
    	_A1=1;
    	_RD=1;
    	_WR=0;	  	 // A0=A1=1 , WR =0 >> Cho phep ghi vao tu dien khien
    
    	P1=manh2;	
    
    }
    
    
     void ghi_T1(unsigned int manh1)
    {
     	
    	_A0=1;
    	_A1=0;
    	_RD=1;
    	_WR=0;		// A0=1, A1=0 , WR = 0 >> Cho phep nap  gia tri vao Timer 1 
    
    	_GATE=1;
    	P1=manh1%256;			   // Truyen Byte Thap truoc
    	delay();
    
    	P1=manh1/256;			  // Truyen byte cao sau 
    	delay();
    
    }
    
    
     void main()
    {
    
    
    ghi_CWR(119);		// Gia su Timer 1 , Mode 3 , dem thap phan ,
                                             truyen byte thap truoc   byte cao sau 
    delay();
    
    ghi_T1(200);	   // Nap gia tri ban dau cho  Timer 1 la 200 (Byte thap 200 , byte cao 0 )
    delay();
    
    _GATE=0;
    _GATE=1;
    
    while(1);  	  
    }
    Còn đây là file ISIS (Em dùng Proteus 7.6 )
    trời viết dài thế mà không chạy bạn chỉ cần cho nó xuất ra tín hiệu kiểu nhấp nháy với tần số 1hz là được chúc thành công

    Comment


    • #3
      Vấn đề là cần người chỉ giáo . Sai ở chỗ nào , sửa chô nào cơ .......

      Comment


      • #4
        Có cái cho đồng chí đây
        Code:
        void nap_gia_tri(void)
        {
            unsigned int data1;  
            Dieu khien timer0
            //----Write mode-----
            WR = 0 ;
            RD = 1;
            A0 = 1;
            A1 = 1;
            //control word format
            Data = 0x36;// 0 0 1 1  0 1 1 0  Counter 0, truyen biet trong so thap truoc, bit trong so cao nhat sau, Mode = 3, che do dem 16 bit 
                        // chi can thay doi 2 bit cao nhat de chon couter tuong ung
            CS = 0;
            //--nap gia tri dem cho counter---------------
            CS = 1;
            A0 = 0;
            A1 = 0; //nap cho timer0
            data1 = 4000;
            Data = (unsigned char)data1;  //lSB
            CS = 0;
            CS = 1;
            Data = (unsigned char)(data1>>8); //MSB
            CS = 0;
            CS = 1;
            
            // dieu khien timer 1
            
            A0 = 1;
            A1 = 1;
            Data = 0x76;
            CS = 0;
            CS = 1;
            A0 = 1;
            A1 = 0; //nap cho timer0
            data1 = 1000;
            Data = (unsigned char)data1;  //lSB
            CS = 0;
            CS = 1;
            Data = (unsigned char)(data1>>8); //MSB
            CS = 0;
            CS = 1;
            
            
        }
        n
        ĐT: 0986 492 489

        Tham khảo:

        Comment


        • #5
          tạo tần số 4MHz (bằng tần số Clock tại chân OUT)

          Cảm ơn các bạn đã giúp mình .!

          Bây dzờ mình còn 1 thắc mắc nhỏ nữa là : Giả sử ta dùng thạch anh 4Mhz tạo xung Clock kích cho Timer !
          Mình mún cho đầu ra Timer đúng là 4MHz (bằng tần số clock của Timer ) thì làm thế nào ạ
          Em đã tìm hiểu 6 ché độ hoạt động của 8253 nhưng không có chế độ nào có tần số xung ra như vậy !
          Có thể tạo được không ạ !!

          Comment

          Về tác giả

          Collapse

          saochangtinh Tìm hiểu thêm về saochangtinh

          Bài viết mới nhất

          Collapse

          Đang tải...
          X