chả là e đang tìm hiểu con 89c52 giao tiếp với ram ngoài ạ nhưng mà đến đây hơi mắc các bác à, ai rành về món này giúp e với, e có giao tiếp với ds1307 để đọc giờ và hiển thị trên led matrix 16*48 em đã cho hiển thị lên được rồi nhưng giờ em muốn ngày và giờ hiển thị chạy như chạy chữ mà chưa biết làm thế nào, nghe có bác congdt hướng dẫn là dùng ram 62256 load tất cả ngày giờ vào đó rồi dùng lệnh movx đọc ra. code đó như thế này ạ
và có 1 số chỗ em chưa hiểu lắm như trong chương trình con ghi vào ram
WRITE_62C256:
MOV A,#00h
MOVC A,@A+DPTR
MOV R7,A
INC DPTR
MOV RCH,DPH
MOV RCL,DPL
MOV DPH,RXH
MOV DPL,RXL
MOV A,R7
MOVX @DPTR,a
INC DPTR
MOV RxH,DPH
MOV RxL,DPL
MOV DPH,RCH
MOV DPL,RCL
DJNZ END_WRITE_RAM,WRITE_62C256
những dòng lệnh đó có tác dụng gì ạ, và sau khi làn ghi thứ 2 thì e có phải xoá dữ liệu trên ram trước khi lưu dữ liệu mới không và còn rất nhiều chỗ muốn hỏi rất mong các bác giúp đỡ.
sau khi tìm hiểu nhiều tài liệu thì e đã vẽ được cái sơ đồ như file đính kèm, do giao tiếp với ram ngoài mất khá nhiều chân VXL nên e đã thêm phần giao tiếp với 8255A để mở rộng chân cho VXL và phần code cho quang báo mất khá nhiều dung lượng ROM mà ROM nội con 89c52 chỉ có 8k không đủ để đảm nhiệm công việc đó vậy phải làm thế nào ạ. các bác chỉ em thêm phần đó nữa.
phần giao tiếp với 8255 thì em đã hiểu và lập trình vào ra đơn giản cho nó được rồi nhưng còn 6264 thì vẫn mắc chưa giải quyết được trên diễn đàn e thấy rất nhiều bạn hỏi về 8051 giao tiếp với RAM ngoài nhưng không được giải đáp và giúp đỡ, những phần khác thì em thấy các bác giúp đỡ rất nhiệt tình nhưng cứ đến giao tiếp với RAM thì lại thấy trầm xuống. e tìm mãi vẫn chưa có 1 bài viết nào cụ thể và chi tiết 1 chút nên rất mong các bác giành chút ít thời gian để giúp e phần này.
em gửi mạch và phần code giao tiếp đơn giản với 8255 xuất ra portC của 8255 các bit xen kẽ để các bác tiện giúp đỡ.
up lên diễn đàn mãi không được nên e cho nên mediafire
89c52.zip
cảm hơn các bác rất nhiều
Code:
GHI_LICHVN: MOV RXL,#00 MOV RXH,#00 LCALL CLEAR_PAGE_RAM ;-------------^ XOA PHAN DAU MOV DPTR,#HOM_NAY MOV END_WRITE_RAM,#112 LCALL WRITE_62C256 MOV R0,THU CJNE R0,#8,NAP_THU ; KIEM TRA NGAY CHU NHAT MOV DPTR,#_CN MOV END_WRITE_RAM,#100 LCALL WRITE_62C256 LJMP NAP_NGAY NAP_THU: MOV DPTR,#_THU MOV END_WRITE_RAM,#48 LCALL WRITE_62C256 MOV R0,THU LCALL LAY_SO MOV END_WRITE_RAM,#14 LCALL WRITE_62C256 NAP_NGAY: MOV DPTR,#_NGAY MOV END_WRITE_RAM,#60 LCALL WRITE_62C256 MOV TMP1,NGAY LCALL BINBCD1 MOV R0,TMP1 LCALL LAY_SO MOV END_WRITE_RAM,#14 LCALL WRITE_62C256 MOV R0,TMP2 LCALL LAY_SO MOV END_WRITE_RAM,#14 LCALL WRITE_62C256 NAP_THANG: MOV DPTR,#_THANG MOV END_WRITE_RAM,#72 LCALL WRITE_62C256 MOV TMP1,THANG LCALL BINBCD1 MOV R0,TMP1 LCALL LAY_SO MOV END_WRITE_RAM,#14 LCALL WRITE_62C256 MOV R0,TMP2 LCALL LAY_SO MOV END_WRITE_RAM,#14 LCALL WRITE_62C256 NAP_NAM: MOV DPTR,#_NAM MOV END_WRITE_RAM,#52 LCALL WRITE_62C256 MOV R0,#2 ; NAM 20xx LCALL LAY_SO MOV END_WRITE_RAM,#14 LCALL WRITE_62C256 MOV R0,#0 LCALL LAY_SO MOV END_WRITE_RAM,#14 LCALL WRITE_62C256 MOV TMP1,NAM LCALL BINBCD1 MOV R0,TMP1 LCALL LAY_SO MOV END_WRITE_RAM,#14 LCALL WRITE_62C256 MOV R0,TMP2 LCALL LAY_SO MOV END_WRITE_RAM,#14 LCALL WRITE_62C256 BAO_GIO: MOV DPTR,#LUC_NAY_LA MOV END_WRITE_RAM,#126 LCALL WRITE_62C256 NHAP_GIO: MOV TMP1,GIO LCALL BINBCD1 MOV R0,TMP1 LCALL LAY_SO MOV END_WRITE_RAM,#14 LCALL WRITE_62C256 MOV R0,TMP2 LCALL LAY_SO MOV END_WRITE_RAM,#14 LCALL WRITE_62C256 MOV DPTR,#_GIO MOV END_WRITE_RAM,#40 LCALL WRITE_62C256 NHAP_PHUT: MOV TMP1,PHUT LCALL BINBCD1 MOV R0,TMP1 LCALL LAY_SO MOV END_WRITE_RAM,#14 LCALL WRITE_62C256 MOV R0,TMP2 LCALL LAY_SO MOV END_WRITE_RAM,#14 LCALL WRITE_62C256 MOV DPTR,#_PHUT MOV END_WRITE_RAM,#58 LCALL WRITE_62C256 BAO_NDO: MOV DPTR,#NHIET_DO MOV END_WRITE_RAM,#120 LCALL WRITE_62C256 MOV TMP1,NDO LCALL BINBCD1 MOV R0,TMP1 LCALL LAY_SO MOV END_WRITE_RAM,#14 LCALL WRITE_62C256 MOV R0,TMP2 LCALL LAY_SO MOV END_WRITE_RAM,#14 LCALL WRITE_62C256 MOV DPTR,#_DO_C MOV END_WRITE_RAM,#24 LCALL WRITE_62C256 ghi vào ram: WRITE_62C256: MOV A,#00h MOVC A,@A+DPTR MOV R7,A INC DPTR MOV RCH,DPH MOV RCL,DPL MOV DPH,RXH MOV DPL,RXL MOV A,R7 MOVX @DPTR,a INC DPTR MOV RxH,DPH MOV RxL,DPL MOV DPH,RCH MOV DPL,RCL DJNZ END_WRITE_RAM,WRITE_62C256 bang mã: so_0: db 0c0h,007h,080h,003h,0bfh,0fbh,0bfh,0fbh,080h,003h, 0c0h,007h,0ffh,0ffh so_1: DB 0EFH,0FBH,0DFH,0FBH,080H,003H,080H,003H,0FFH,0FBH, 0FFH,0FBH,0FFH,0FFH so_2: DB 0C7H,0E3H,087H,0D3H,0BFH,033H,0BCH,073H,081H,0F3H, 0C3H,0E3H,0FFH,0FFH so_3: DB 0CFH,0E7H,08FH,0E3H,0BDH,0FBH,0BCH,0FBH,082H,007H, 0C7H,00FH,0FFH,0FFH so_4: DB 0FFH,09FH,0FEH,05FH,0F9H,0DBH,0E0H,003H,080H,003H, 0FFH,0DBH,0FFH,0FFH so_5: DB 0FFH,0E7H,081H,0EBH,09DH,0FBH,09DH,0F3H,09CH,007H, 0FEH,00FH,0FFH,0FFH so_6: DB 0C0H,007H,080H,003H,0BEH,0FBH,0BEH,0FBH,08EH,003H, 0CFH,007H,0FFH,0FFH so_7: DB 08FH,0FFH,09FH,0FFH,09FH,0C3H,09CH,003H,083H,0FFH, 08FH,0FFH,0FFH,0FFH so_8: DB 0C3H,087H,0B9H,073H,0BCH,0FBH,0BCH,07BH,081H,033H, 0C3H,087H,0FFH,0FFH so_9: DB 0C0H,0E7H,080H,063H,0BFH,07BH,0BFH,07BH,080H,003H, 0C0H,007H,0FFH,0FFH HAI_CHAM: DB 0FFH,0FFH,0FFH,0FFH,0F9H,0E7H,0F9H,0E7H,0FFH,0FFH, 0FFH,0FFH,0FFH,0FFH _CN: ;100 db 0e0h,07fh,080h,007h,07fh,0f3h,07fh,0fbh,00fh,0f3h, 08fh,0c7h,0ffh,0ffh db 07fh,0ffh,000h,003h,000h,003h,0fdh,0ffh,0fch,003h, 0feh,003h,0ffh,0ffh db 0fch,007h,0fch,003h,0dfh,0fbh,0b4h,003h,0cch,003h, 0ffh,0ffh db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh db 0fch,003h,0fch,003h,0fdh,0ffh,0fch,003h,0feh,003h, 0ffh,0ffh db 07fh,0ffh,000h,003h,000h,003h,0fdh,0ffh,0fch,003h, 0feh,003h,0ffh,0ffh db 0feh,0c7h,0f4h,083h,0edh,0bah,0f4h,007h,0feh,003h, 0ffh,0fbh,0ffh,0ffh db 0fdh,0ffh,0e0h,007h,0e0h,003h,0fdh,0fbh,0ffh,0f7h, 0ffh,0ffh _THU: ;48 db 01fh,0ffh,07fh,0fbh,000h,003h,000h,003h,07fh,0fbh, 01fh,0ffh,0ffh,0ffh db 07fh,0ffh,000h,003h,000h,003h,0fdh,0ffh,0fch,003h, 0feh,003h,0ffh,0ffh db 0fch,007h,0fch,003h,0f7h,0fbh,0ech,003h,0ech,003h, 0feh,0ffh,0fdh,0ffh,0ffh,0ffh db 0ffh,0ffh,0ffh,0ffh _NGAY: ;60 db 0ffh,0ffh,0ffh,0ffh db 0fch,003h,0fch,003h,0fdh,0ffh,0fch,003h,0feh,003h, 0ffh,0ffh db 0feh,012h,0fch,002h,0fdh,0d2h,0fch,012h,0fch,039h, 0ffh,0ffh db 0feh,0c7h,0ech,083h,0edh,0bbh,0f4h,007h,0feh,003h, 0ffh,0fbh,0ffh,0ffh db 0fdh,0fdh,0fch,01eh,0fch,000h,0ffh,0c1h,0fch,03fh, 0fdh,0ffh,0ffh,0ffh db 0ffh,0ffh,0ffh,0ffh _THANG: ;72 db 0ffh,0ffh,0ffh,0ffh db 0efh,0ffh,000h,007h,000h,003h,0efh,0fbh,0ffh,0f7h, 0ffh,0ffh db 07fh,0ffh,000h,003h,000h,003h,0fdh,0ffh,0fch,003h, 0feh,003h,0ffh,0ffh db 0feh,0c7h,0fch,083h,0f5h,0bbh,0ech,007h,0eeh,003h, 0ffh,0fbh,0ffh,0ffh db 0fch,003h,0fch,003h,0fdh,0ffh,0fch,003h,0feh,003h, 0ffh,0ffh db 0feh,012h,0fch,002h,0fdh,0d2h,0fch,012h,0fch,039h, 0ffh,0ffh db 0ffh,0ffh,0ffh,0ffh _NAM: ;52 db 0ffh,0ffh,0ffh,0ffh db 0fch,003h,0fch,003h,0fdh,0ffh,0fch,003h,0feh,003h, 0ffh,0ffh db 0feh,0c7h,0ech,083h,0f5h,0bbh,0f4h,007h,0eeh,003h, 0ffh,0fbh,0ffh,0ffh db 0fch,003h,0fch,003h,0fdh,0ffh,0fch,003h,0fch,003h, 0fdh,0ffh,0fch,003h,0feh,003h,0ffh,0ffh db 0ffh,0ffh,0ffh,0ffh _GIO: ;40 db 0ffh,0ffh,0ffh,0ffh db 0feh,012h,0fch,002h,0fdh,0d2h,0fch,012h,0fch,039h, 0ffh,0ffh db 0e4h,003h,0e4h,003h,0ffh,0ffh db 0feh,007h,0fch,003h,0edh,0fbh,0ech,003h,0f6h,007h, 0fch,0ffh,0ffh,0ffh db 0ffh,0ffh,0ffh,0ffh _PHUT: ;58 db 0ffh,0ffh,0ffh,0ffh db 0fch,000h,0fch,000h,0fdh,0fbh,0fch,003h,0feh,007h, 0ffh,0ffh db 07fh,0ffh,000h,003h,000h,003h,0fdh,0ffh,0fch,003h, 0feh,003h,0ffh,0ffh db 0fch,007h,0fch,003h,0f7h,0fbh,0ech,003h,0ech,003h, 0ffh,0ffh db 0fdh,0ffh,0e0h,007h,0e0h,003h,0fdh,0fbh,0ffh,0f7h, 0ffh,0ffh db 0ffh,0ffh,0ffh,0ffh HOM_NAY: ;112 db 07fh,0fbh,000h,003h,000h,003h,07dh,0fbh,0fdh,0ffh, 0fdh,0ffh,07dh,0fbh,000h,003h,000h,003h,07fh,0fbh, 0ffh,0ffh db 0feh,007h,0f4h,003h,0edh,0fbh,0f4h,003h,0feh,007h, 0ffh,0ffh db 0fch,003h,0fch,003h,0fdh,0ffh,0fch,003h,0fch,003h, 0fdh,0ffh,0fch,003h,0feh,003h,0ffh,0ffh db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh db 0fch,003h,0fch,003h,0fdh,0ffh,0fch,003h,0feh,003h, 0ffh,0ffh db 0feh,0c7h,0fch,083h,0fdh,0bbh,0fch,007h,0feh,003h, 0ffh,0fbh,0ffh,0ffh db 0fdh,0fdh,0fch,01eh,0fch,000h,0ffh,0c1h,0fch,03fh, 0fdh,0ffh,0ffh,0ffh db 0ffh,0f2h,0ffh,0f1h,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh, 0ffh,0ffh LUC_NAY_LA: ;126 db 0ffh,0f2h,0ffh,0f1h,0ffh,0ffh db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh db 07fh,0ffh,000h,003h,000h,003h,0ffh,0ffh db 0fch,007h,0fch,003h,0f7h,0fbh,0ech,003h,0ech,003h, 0ffh,0ffh db 0feh,007h,0fch,003h,0fdh,0fbh,0feh,067h,0ffh,0ffh db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh db 0fch,003h,0fch,003h,0fdh,0ffh,0fch,003h,0feh,003h, 0ffh,0ffh db 0feh,0c7h,0ech,083h,0edh,0bbh,0f4h,007h,0feh,003h, 0ffh,0fbh,0ffh,0ffh db 0fdh,0fdh,0fch,01eh,0fch,000h,0ffh,0c1h,0fch,03fh, 0fdh,0ffh,0ffh,0ffh db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh db 07fh,0ffh,000h,003h,000h,003h,0ffh,0ffh db 0feh,0c7h,0ech,083h,0edh,0bbh,0f4h,007h,0feh,003h, 0ffh,0fbh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh NHIET_DO: ;120 db 0ffh,0f3h,0ffh,0f3h,0ffh,0ffh db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh db 07fh,0fbh,000h,003h,007h,0fbh,0c0h,0ffh,0f8h,03fh, 07eh,007h,000h,003h,07fh,0ffh,0ffh,0ffh db 07fh,0ffh,000h,003h,000h,003h,0fdh,0ffh,0fch,003h, 0feh,003h,0ffh,0ffh db 0e4h,003h,0e4h,003h,0ffh,0ffh db 0feh,007h,0f4h,003h,0edh,0bah,0f4h,03bh,0feh,037h, 0ffh,0ffh db 0fdh,0ffh,0e0h,007h,0e0h,003h,0fdh,0fbh,0ffh,0f7h, 0ffh,0ffh db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh db 0feh,007h,0fch,003h,0edh,0fbh,000h,003h,000h,003h, 0efh,0ffh,0ffh,0ffh db 0feh,007h,0f4h,003h,0edh,0fah,0f4h,003h,0feh,007h, 0ffh,0ffh db 0f9h,0e7h,0f9h,0e7h,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh _DO_C: ;24 ;db 0ffh,0ffh db 09fh,0ffh,06fh,0ffh,06fh,0ffh,09fh,0ffh,0e0h,00fh, 0c0h,007h,09fh,0f3h,0bfh,0fbh,0bfh,0fbh,0cfh,0e7h, 0e7h,0cfh,0ffh,0ffh
WRITE_62C256:
MOV A,#00h
MOVC A,@A+DPTR
MOV R7,A
INC DPTR
MOV RCH,DPH
MOV RCL,DPL
MOV DPH,RXH
MOV DPL,RXL
MOV A,R7
MOVX @DPTR,a
INC DPTR
MOV RxH,DPH
MOV RxL,DPL
MOV DPH,RCH
MOV DPL,RCL
DJNZ END_WRITE_RAM,WRITE_62C256
những dòng lệnh đó có tác dụng gì ạ, và sau khi làn ghi thứ 2 thì e có phải xoá dữ liệu trên ram trước khi lưu dữ liệu mới không và còn rất nhiều chỗ muốn hỏi rất mong các bác giúp đỡ.
sau khi tìm hiểu nhiều tài liệu thì e đã vẽ được cái sơ đồ như file đính kèm, do giao tiếp với ram ngoài mất khá nhiều chân VXL nên e đã thêm phần giao tiếp với 8255A để mở rộng chân cho VXL và phần code cho quang báo mất khá nhiều dung lượng ROM mà ROM nội con 89c52 chỉ có 8k không đủ để đảm nhiệm công việc đó vậy phải làm thế nào ạ. các bác chỉ em thêm phần đó nữa.
phần giao tiếp với 8255 thì em đã hiểu và lập trình vào ra đơn giản cho nó được rồi nhưng còn 6264 thì vẫn mắc chưa giải quyết được trên diễn đàn e thấy rất nhiều bạn hỏi về 8051 giao tiếp với RAM ngoài nhưng không được giải đáp và giúp đỡ, những phần khác thì em thấy các bác giúp đỡ rất nhiệt tình nhưng cứ đến giao tiếp với RAM thì lại thấy trầm xuống. e tìm mãi vẫn chưa có 1 bài viết nào cụ thể và chi tiết 1 chút nên rất mong các bác giành chút ít thời gian để giúp e phần này.
em gửi mạch và phần code giao tiếp đơn giản với 8255 xuất ra portC của 8255 các bit xen kẽ để các bác tiện giúp đỡ.
up lên diễn đàn mãi không được nên e cho nên mediafire
89c52.zip
cảm hơn các bác rất nhiều
Comment