![]() |
![]() |
#1 |
Nhập môn đệ tử
Tham gia ngày: Apr 2009
Bài gửi: 6
: |
![]() em làm cái đồng hồ dung 16f877a + ds12c887+ LCD
viết bằng CCS nhưng tới phần ghi và đọc 1 giá trị vào thanh ghi thì gặp 1 lỗi không hiểu được. Đó là chỉ đọc đúng giá trị của thanh ghi vào lần lặp đầu tiên, những lần tiếp theo thì sai. Các bác coi gium em lỗi ở đâu với. Đây là code em tự mò viết: Code:
#include <16F877a.h> #include <DEFS_16F877A.h> #fuses HS,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT #use delay(clock=20000000) #define use_portb_lcd TRUE #include <lcd.c> #define DS RE2 #define R_W RE1 #define AS RE0 #define RTC PORTD int DCD,DCV,DLV,DCS,x,high,medum,low,digit; //ham doc rtc void docrtc(void) { set_tris_E(0); DS =1; R_W=1; AS =1; RTC=DCD; delay_ms(1); AS =0; DS =0; set_tris_D(0xff); delay_ms(1); } //Ham ghi vao rtc void vietrtc(void) { set_tris_E(0); AS = 1; DS = 1; R_W= 1; RTC= DCV; delay_ms(1); AS = 0; delay_ms(1); RTC= DLV; R_W= 0; delay_ms(1); AS = 1; delay_ms(1); } void main(void) { delay_ms(100); // tao tre 100ms cho LCD khoi dong set_tris_D(0); set_tris_E(0); DCV = 0; //xoa dia chi ghi DLV = 0; //xoa du lieu ghi delay_ms(1); DCV = 0x15; // dia chi thanh ghi 0x15 DLV = 0x54; // gia tri cap nhat while(1) { DCS = 0; //xoa dia chi luu DCD = 0; // xoa dia chi doc vietrtc(); delay_ms(1); DCD = 0x15; // doc gia tri thanh ghi 0x15 docrtc(); DCS = RTC; x = DCS; delay_ms(1); AS = 1; lcd_init(); lcd_gotoxy(7,1); // vi tri (x,y)=(7,1)= hang 1, cot 7 lcd_putc(x); delay_ms(1000); } } thay đổi nội dung bởi: namqn, 23-12-2009 lúc 07:57 AM. Lý do: định dạng code |
![]() |
![]() |
|
|