Thông báo

Collapse
No announcement yet.

Hỏi về reset mềm 8952 bằng C?

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

  • Hỏi về reset mềm 8952 bằng C?

    Có bạn nào biết lệnh reset mềm 8051 bằng C không hướng dẫn hộ mình với.
    Mình lập trình chế độ UART và muốn mỗi lần có ngắt nhận được dữ liệu thì lại cho chương trình chạy lại từ đầu để cập nhật lại cái biến trong lệnh Switch(biến) ..... case... . Mình viết chương trình chạy các hiệu ứng led nên biến đó là để chọn hiệu ứng.
    Tại chương trình trong case điều khiển Led nên có nhiều delay. Mình muốn là mỗi lần ngắt là cách chạy của led được cập nhật ngay chứ không phải chờ tất cả các lệnh trong case chạy xong thì mới cập nhật trạng thái mới. Vậy thì lâu quá.
    Với lại mình muốn lưu cái biến đó vào eeprom hoặc là flash hoặc lưu làm sao để khi khởi động lại thì nó cũng không bị reset, phải khai báo như thế nào nhỉ, trong AVR mình thấy có lệnh "flash char bien" hoặc là "eeprom char bien" mà không biết trong 8952 thì sao nữa.
    Mình làm đề tài môn học, mong mọi người giúp đỡ. Xin cảm ơn.

    Chương trình của mình gần giống thế này:

    Code:
    #include <REGX52.H>
    
    //Bien cuc bo
    char uart_data_receive; //Mình muốn biến này không bay hơi( không bị mất khi reset)
    
    void uart_init()//Khoi tao UART
    {
    	SCON=0x50;//che do 8 bit du lieu,1 bit sart,1 bit stop
    	TMOD&=0x0F;//
        TMOD|=0x20;//timer1 in mode2
        TH1=0xFD;//set baut rate at 9600(11.0592Mhz)
        TL1=0xFD;
        ES=1;//cho phep ngat noi tiep
    	EA=1;//cho fep tat ca cac ngat
    	TR1=1;//chay timer1
    }
    
    //*************Nhan du lieu*********************
    void receive_data() interrupt 4//ngat nhan du lieu
    {
    	if(RI==1)
    		{
    			RI=0;
    			uart_data_receive=SBUF;
                            // Mình muốn đặt lệnh reset tại đây
    		}
    }
    
    
    void main(void)
    {
     uart_init();
     while(1) {
     switch (uart_data_receive)
     {
     case 0x01:
     	{
    	 hieuung1();
    	 break;
    	}
     case 0x02:
     	{
    	 hieuung2();
    	 break;
    	}
     }
     }
    }
    Last edited by vodoika; 25-02-2012, 02:28.

  • #2
    sử dụng watdog timer nếu cần
    Be quan. Plz contact through email:

    Comment


    • #3
      Bạn có thể giúp mình lệnh set Watchdog và làm cho Watchdog tràn được không. Cám ơn bạn nhiều!(^_^)

      Comment


      • #4
        theo mình thì bạn thử nghĩ tới phương án dùng 1 timer liên tục kiểm tra bit RI nhé.nhớ đặt ưu tiên ngát nữa nhé.khi có sự thay đổi thì cho chạy lại từ đầu thôi

        Comment


        • #5
          Mình không hiểu rõ lắm về 8952 nên mọi người có thể giúp mình vài dòng code được không? Tại ngày xưa làm AVR nhưng bữa nay dùng 8952 cho tiết kiệm. (^_^)

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          • Andrea14
            Vấn đề về tốc độ quay
            bởi Andrea14
            Chào mọi người,

            Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...
            12-12-2025, 12:42
          • bqviet
            Trả lời cho Đấu tắt điện cho máy tính bảng
            bởi bqviet
            Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
            06-12-2025, 17:17
          • nguyendinhvan
            Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
            bởi nguyendinhvan
            Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
            05-12-2025, 19:59
          Đang tải...
          X