Tình hình là mình lâu lâu quay về 89 làm cái đồng hồ số DS1307 cho thằng em. Code ngon nghẻ, mô phỏng rầm rầm và bắt đầu đi thực hiện. Thực hiện nạp code xong thì chương trình chạy sai, không hiển thị được gì sất. Kiểm tra lại chương trình, mạch in xem có sai đâu ko nhưng không phát hiện lỗi sai ( mô phỏng vẫn chạy kia mà - mình tự code ). Bắt đầu cắt từng đoạn code đi bug và dừng lại nghi ngờ ở việc truy xuất mảng.
Chương trình thì không có yêu cầu gì quá đáng. Nó đây ạ :
File Delay.c
Dịch không báo lỗi, không warning. Mô phỏng không báo lỗi gì nhưng thực tế mạch chạy tầm vài s thì dừng. Reset cũng không chạy lại. Chỉ chạy lại khi ngắt nguồn hoặc gỡ chip ra lắp lại thì chạy tầm vài s tiếp. Có một điều khó hiểu là trên P2, khi treo thì chạm vào Pin nào trên P2 thì Pin đó đổi trạng thái ( vẫn không reset được). Theo các cao nhân thì hiện tượng đó giải thích thế nào ạ
Pin 31 đã nối Vcc, Chân 9 vẫn có mức 0-1 khi nhấn reset, các biến đã được gán giá trị khi khai báo nên không thể nhận giá trị vớ vẩn khi reset được ?
Có khi nào mấy con 89 bị ma làm ( mình nạp vào 3 con 89 mới đều như nhau ) ? @@
Chương trình thì không có yêu cầu gì quá đáng. Nó đây ạ :
Code:
#include <REGX51.h> #include "DELAY.c" unsigned char time_dis[6] ={0,0,0,0,0,0}; unsigned char disp_i=0; code unsigned char led_hex[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0xFF,0x6F}; void main() { while(1) { P0=0xFF; P2=led_hex[time_dis[0]]; P0=0xFE; delay_ms(5); } }
Code:
void delay_ms(unsigned int xTime); void delay_ms(unsigned int xTime) { while(xTime>0) { unsigned int time_temp = 123; while(time_temp>0) { time_temp--; } xTime--; } }
Pin 31 đã nối Vcc, Chân 9 vẫn có mức 0-1 khi nhấn reset, các biến đã được gán giá trị khi khai báo nên không thể nhận giá trị vớ vẩn khi reset được ?
Có khi nào mấy con 89 bị ma làm ( mình nạp vào 3 con 89 mới đều như nhau ) ? @@
Comment