Thông báo

Collapse
No announcement yet.

Ai Biết Chỉ Dùm Chương Trình Tạo Xung Bằng Ngắt Này Với

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

  • Ai Biết Chỉ Dùm Chương Trình Tạo Xung Bằng Ngắt Này Với

    #include <REGX52.H>
    sbit xung = P2^0;
    sbit led = P2^1;
    void delay_ms(unsigned int ms)
    { unsigned int i,j;
    for(i=1;i<=ms;i++)
    for(j=1;j<=121;j++)
    {}
    }
    // khai bao ham ngat
    void ngat_t0(void)interrupt 1
    { TF0=0;
    xung = 0;
    delay_ms(5);
    xung = 1;
    TH0 = 0xc5;
    TL0 = 0x68;
    }
    //chuong trinh chinh
    void main()
    {
    P0=0xff;
    IE = 0x82;
    TMOD = 0x01;
    TH0 = 0xc5;
    TL0 = 0x68;
    TR0 = 1;
    while(1);


    }


    ************************************************** *****************************************
    ************************************************** *****************************************
    Ai chỉ cho mình với , mình viết chương trình này để tạo xung tần số 50hz , trong do muc cao = 15ms, mức thấp = 5ms
    mọi người cho mình hỏi tai sao khi mô phỏng thì chạy không đúng đèn led sáng nhấp nháy một lúc rồi sang liền một lúc rồi lại sang nhấp nháy ( dung OSC trong protuest đo thì thấy xung đúng không vấn đề gì ), xin các cao thủ chỉ giúp , mình mới học VĐK (tự tìm hiểu nên không biết )mong mọi người giúp mình với , chỗ nào sai thì chỉ hộ mình với

    đây là mô phỏng : ngat T0_che do 16 bit.rar

  • #2
    Nguyên văn bởi thangcdt09 Xem bài viết
    #include <REGX52.H>
    sbit xung = P2^0;
    sbit led = P2^1;
    void delay_ms(unsigned int ms)
    { unsigned int i,j;
    for(i=1;i<=ms;i++)
    for(j=1;j<=121;j++)
    {}
    }
    // khai bao ham ngat
    void ngat_t0(void)interrupt 1
    { TF0=0;
    xung = 0;
    delay_ms(5);
    xung = 1;
    TH0 = 0xc5;
    TL0 = 0x68;
    }
    //chuong trinh chinh
    void main()
    {
    P0=0xff;
    IE = 0x82;
    TMOD = 0x01;
    TH0 = 0xc5;
    TL0 = 0x68;
    TR0 = 1;
    while(1);


    }
    đối với chế độ này, muốn nạp lại giá trj cho timer phải dừng timer, xóa cờ tràn sau đó mới cho timer hoạt động tiếp được, bạn chưa có thao tác dừng timer và cho phép timer trong hàm ngắt, mới cho phép 1 lần trong main thôi
    Website chính thức đổi địa chỉ website thành
    Mời các bạn ghé thăm !!!

    Comment


    • #3
      lỗi do mô phỏng ko đáp ứng đúng thôi không sao hết, xung luôn là 50Hz.
      Với nữa bạn có thể bỏ lệnh TF0=0 đi vì mặc định 89 luôn xóa các cờ ngắt ngay sau khi phát hiện có ngắt, không cần tắt timer sau mỗi lần ngắt vì làm thế cũng là thừa vì sau khi ngắt thời gian các lệnh trong ngắt làm không quá 65536 uS (ở đây chỉ có delay 5000uS trong ngắt là dài nhất thôi) thì ko cần tắt timer cứ cho nó chạy rồi gần thoát ngắt ta nạp lại giá trị cần thiết là đc

      Comment


      • #4
        thanks ! cảm ơn nhiều , có gì lần sau lại giúp tớ nha

        Comment

        Về tác giả

        Collapse

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

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

        Collapse

        Đang tải...
        X