Nguyên văn bởi huuthobka
Xem bài viết
Thông báo
Collapse
No announcement yet.
Code Cho VĐK 8051 Bằng Assemnly Không Chậy.
Collapse
X
-
Nguyên văn bởi Ck33spkt Xem bài viếtCó lẽ tại phần cứng mô phỏng của đồng chí vẽ thiếu mạch reset cho VĐK chứ code trên thì đâu có sai cái gì...!
mình test thử code này:
Code:ORG 00H MOV P1,#0FFH CLR C HERE: MOV A,P1 RLC A MOV P1,A ACALL DELAY JMP HERE DELAY: MOV R7,#250 DELAY1: MOV R6,#250 DJNZ R6,$ DJNZ R7,DELAY1 RET END
nhưng khi nạp vào mô phỏng thử bằng Proteus thì nó lại nháy chân p1.0 đungs một phát rồi thôi ? thế mới lạ .
nếu bỏ dong MOV A,P1 ở trong vòng lặp trên đi thì mô phỏng trong PROTEUS lại chậy đúng ??? rất lạ
vấn đề là tại xao khi kiểm tra mức logic của các chân bằng Keil C thì chậy đúng ,mà kiểm proteus lại mô phỏng sai ?
bạn thử nạp code của mình vào rồi mô phỏng với trường hợp có và không có lệnh MOV A,P1 xem nó chậy có đúng không ??? (mình đã ghỡ cả PROTEUS ra và cài lại nhưng vẫn vậy)
Comment
-
Nguyên văn bởi huuthobka Xem bài viếtmình test thử bài đơn giản sau thì thấy vấn đề nằm ở lệnh MOV A,P0.
mình test thử code này:
Code:ORG 00H MOV P1,#0FFH CLR C HERE: MOV A,P1 RLC A MOV P1,A ACALL DELAY JMP HERE DELAY: MOV R7,#250 DELAY1: MOV R6,#250 DJNZ R6,$ DJNZ R7,DELAY1 RET END
nhưng khi nạp vào mô phỏng thử bằng Proteus thì nó lại nháy chân p1.0 đungs một phát rồi thôi ? thế mới lạ .
nếu bỏ dong MOV A,P1 ở trong vòng lặp trên đi thì mô phỏng trong PROTEUS lại chậy đúng ??? rất lạ
vấn đề là tại xao khi kiểm tra mức logic của các chân bằng Keil C thì chậy đúng ,mà kiểm proteus lại mô phỏng sai ?
bạn thử nạp code của mình vào rồi mô phỏng với trường hợp có và không có lệnh MOV A,P1 xem nó chậy có đúng không ??? (mình đã ghỡ cả PROTEUS ra và cài lại nhưng vẫn vậy)
Comment
-
Nguyên văn bởi chung1608 Xem bài viếtchạy bình thường ???
Code:ORG 00H MOV P0,#0FFH MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH CLR C LAP_LAI: MOV A,P0 RLC A MOV P0,A MOV A,P1 RLC A MOV P1,A MOV A,P2 RLC A MOV P2,A MOV A,P3 RLC A MOV P3,A ACALL DELAY LJMP LAP_LAI DELAY: MOV R7,#250 DELAY1: MOV R6,#250 DJNZ R6,$ DJNZ R7,DELAY1 RET END
Last edited by Ck33spkt; 20-08-2012, 09:39.
Comment
-
Nguyên văn bởi Ck33spkt Xem bài viếtBác chung1608 test thử hộ chủ topic code này đi. Em test bằng Proteus v7.8 nó cũng chỉ nháy mỗi p0.0 rồi đứng thôi.
Code:ORG 00H MOV P0,#0FFH MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH CLR C LAP_LAI: MOV A,P0 RLC A MOV P0,A MOV A,P1 RLC A MOV P1,A MOV A,P2 RLC A MOV P2,A MOV A,P3 RLC A MOV P3,A ACALL DELAY LJMP LAP_LAI DELAY: MOV R7,#250 DELAY1: MOV R6,#250 DJNZ R6,$ DJNZ R7,DELAY1 RET END
Comment
-
Nguyên văn bởi chung1608 Xem bài viếtthêm cái trở thanh vào P0 thì nó chạy thôi. Ko có trở thanh thì các chân P0 chỉ có 2 trạng thái là low và high-Z. Cả hai trạng thái này thì VDK đọc về đều là giá trị 0
Em hỏi cái là làm cách nào để chọn điện trở thanh trong Proteus nhỉ ?
Comment
-
Nguyên văn bởi huuthobka Xem bài viếtVấn đề nữa là nếu trong code có P0, và ta kiểm tra trạng thái các chân bằng cách debug trong Keil C thì sẽ sai và ta cũng kiểm tra lại bằng cách mô phỏng trong Proteus nhưng trường hợp này là có điện trở kéo lên, thì kết quả đúng ?
Em hỏi cái là làm cách nào để chọn điện trở thanh trong Proteus nhỉ ?
2) trở thanh r pack
Comment
-
Mình đang làm về mạch đồng hồ số sử dụng DS1307 hiển thị lên 7-seg, hiển thị và đọc thì ổn rồi, nhưng bài của mình gặp một lỗi là, khi mình nhấn nút để cài đặt cho ds1307 thì đồng hồ không update thời gian mình cài đặt vào:
đây là code và mạch mô phỏng của mình:
Code:;======================================================================== ; DINH NGHIA CAC BIEN SE DUNG GIAY EQU 30H PHUT EQU 31H GIO EQU 32H NGAY EQU 33H THANG EQU 34H NAM EQU 35H TAM1 EQU 36H ADDRESS EQU 37H DEM EQU 38H DATAS EQU 39H MENU BIT P3.0 TANG BIT P3.1 CHON BIT P3.2 SDA BIT P2.7 SCL BIT P2.6 ;======================================================================== ORG 0000H LJMP MAIN0 ; NHAY RA KHOI VECTOR NGAT ORG 000BH LJMP TIME0 ; NHAY DEN DIA CHI NGAT ;========================================================================; ; BAT DAU CHUONG TRINH CHINH ; ;========================================================================; ORG 0030H MAIN0: MOV P3,#0FFH MOV P2,#00H MOV TMOD,#01H MOV DEM,#00H MOV R3,#0 CLR P3.3 MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) MOV DPTR,#MA_7_SEG MOV P0,#0FFH SETB EA SETB ET0 CLR TF0 SETB TR0 MAIN1: ACALL QUET_PHIM ACALL READ JNB CHON,MAIN2 ; CHON HIEN THI NGAY THANG HAY HIEN THI GIO ACALL HIEN_THI_TG JMP MAIN1 MAIN2: ACALL HIEN_THI_NT LJMP MAIN1 ;=================================================================; ; QUET PHIM DE CAI DAT CHO DONG HO ; ;=================================================================; QUET_PHIM: PUSH 00 JB MENU,THOAT_RA ; KIEM TRA XEM CO MUON CAI DAT KHONG ACALL DELAY JNB MENU,$ ; DOI NHA NUT ;======================================== ; THAO TAC VOI GIO ; ;======================================== SETUP_GIO: JB TANG,HTHI_H JNB TANG,$ INC GIO MOV A,GIO CJNE A,#24H,HTHI_H MOV GIO,#00H HTHI_H: ACALL HIEN_THI_GIO JB MENU,SETUP_GIO ; DOI CHINH PHUT JNB MENU,$ ; DOI NHA NUT ;======================================== ; THAO TAC VOI PHUT ; ;======================================== SETUP_PHUT: JB TANG,HTHI_M INC PHUT JNB TANG,$ MOV A,PHUT CJNE A,#60H,HTHI_M MOV PHUT,#00H HTHI_M: ACALL HIEN_THI_PHUT JB MENU,SETUP_PHUT ; DOI CHINH GIAY JNB MENU,$ ; DOI NHA NUT ;======================================== ; THAO TAC VOI GIAY ; ;======================================== SETUP_GIAY: JB TANG,HTHI_S INC GIAY JNB TANG,$ MOV A,GIAY CJNE A,#60H,HTHI_S MOV GIAY,#00H HTHI_S: ACALL HIEN_THI_GIAY JB MENU,SETUP_GIAY ACALL DELAY JNB MENU,$ ;======================================== ; GHI DU LIEU VAO DS1307 ; ;======================================== MOV ADDRESS,#00H MOV DATAS,GIAY ACALL WRITER_DS1307 MOV ADDRESS,#01H MOV DATAS,PHUT ACALL WRITER_DS1307 MOV ADDRESS,#02H MOV DATAS,GIO ACALL WRITER_DS1307 MOV A,#15H ;GIA TRI KIEM TRA DS ACALL WRITER_DS1307 ACALL STOP_I2C ;======================================== THOAT_RA: POP 00 RET ;===================================================================; ; DOC NGAY THANG NAM ; ;===================================================================; READ: ACALL READ_GIAY ACALL READ_PHUT ACALL READ_GIO ACALL READ_NGAY ACALL READ_THANG ACALL READ_NAM RET READ_GIAY: MOV TAM1,#00H ACALL READ_DS1307 ACALL GIAI_MA MOV GIAY,TAM1 RET ;======================================== READ_PHUT: MOV TAM1,#01H ACALL READ_DS1307 ACALL GIAI_MA MOV PHUT,TAM1 RET ;======================================== READ_GIO: MOV TAM1,#02H ACALL READ_DS1307 ACALL GIAI_MA MOV GIO,TAM1 RET ;======================================== READ_NGAY: MOV TAM1,#04H ACALL READ_DS1307 ACALL GIAI_MA MOV NGAY,TAM1 RET ;======================================== READ_THANG: MOV TAM1,#05H ACALL READ_DS1307 ACALL GIAI_MA MOV THANG,TAM1 RET ;======================================== READ_NAM: MOV TAM1,#06H ACALL READ_DS1307 ACALL GIAI_MA MOV NAM,TAM1 RET ;===================================================================; ; GIAI MA TU BCD SANG HEX ; ;===================================================================; GIAI_MA: PUSH 00 MOV R0,#01H MOV B,#16 DIV AB MOV R0,B MOV B,#10 MUL AB ADD A,R0 MOV TAM1,A POP 00 RET ;===================================================================; ; HIEN THI THOI GIAN TRONG NGAY ; ;===================================================================; HIEN_THI_TG: ACALL HIEN_THI_GIO ACALL HIEN_THI_PHUT ACALL HIEN_THI_GIAY RET HIEN_THI_GIO: MOV A,GIO MOV B,#10 DIV AB MOVC A,@A+DPTR MOV P0,A SETB P2.0 ACALL DELAY CLR P2.0 MOV A,B MOVC A,@A+DPTR MOV P0,A SETB P2.1 ACALL DELAY CLR P2.1 RET ;======================================== HIEN_THI_PHUT: MOV A,PHUT MOV B,#10 DIV AB MOVC A,@A+DPTR MOV P0,A SETB P2.2 ACALL DELAY CLR P2.2 MOV A,B MOVC A,@A+DPTR MOV P0,A SETB P2.3 ACALL DELAY CLR P2.3 RET ;======================================== HIEN_THI_GIAY: MOV A,GIAY MOV B,#10 DIV AB MOVC A,@A+DPTR MOV P0,A SETB P2.4 ACALL DELAY CLR P2.4 MOV A,B MOVC A,@A+DPTR MOV P0,A SETB P2.5 ACALL DELAY CLR P2.5 RET ;===================================================================; ; HIEN THI THONG SO CUA NAM ; ;===================================================================; HIEN_THI_NT: ACALL HIEN_THI_NGAY ACALL HIEN_THI_THANG ACALL HIEN_THI_NAM RET HIEN_THI_NGAY: MOV A,NGAY MOV B,#10 DIV AB MOVC A,@A+DPTR MOV P0,A SETB P2.0 ACALL DELAY CLR P2.0 MOV A,B MOVC A,@A+DPTR MOV P0,A SETB P2.1 ACALL DELAY CLR P2.1 RET ;======================================== HIEN_THI_THANG: MOV A,THANG MOV B,#10 DIV AB MOVC A,@A+DPTR MOV P0,A SETB P2.2 ACALL DELAY CLR P2.2 MOV A,B MOVC A,@A+DPTR MOV P0,A SETB P2.3 ACALL DELAY CLR P2.3 RET ;======================================== HIEN_THI_NAM: MOV A,NAM MOV B,#10 DIV AB MOVC A,@A+DPTR MOV P0,A SETB P2.4 ACALL DELAY CLR P2.4 MOV A,B MOVC A,@A+DPTR MOV P0,A SETB P2.5 ACALL DELAY CLR P2.5 RET ;===================================================================; ; READ DS1307: DOC MOT BYTE TU DS1307 ; ;===================================================================; READ_DS1307: ACALL START_I2C MOV A,#0D0H ACALL WRITER_I2C MOV A,TAM1 ACALL WRITER_I2C ACALL STOP_I2C ACALL START_I2C MOV A,#0D1H ACALL WRITER_I2C ACALL READ_I2C ACALL STOP_I2C RET ;===================================================================; ; WRITER_DS1307 : VIET MOT BYTE VAO DS1307 ; ;===================================================================; WRITER_DS1307: ACALL START_I2C MOV A,#0D0H ACALL WRITER_I2C ACALL START_I2C MOV A,ADDRESS ACALL WRITER_I2C ACALL START_I2C ACALL GIAI_MA_HEX ACALL WRITER_I2C ACALL STOP_I2C RET ;========================================; ; CHUYEN TU HEXAN SANG BCD ; ;========================================; GIAI_MA_HEX: PUSH 00 MOV A,DATAS MOV B,#10 DIV AB MOV R0,B MOV B,#16 MUL AB ORL A,R0 POP 00 RET ;===================================================================; ; WRITER I2C : CACH TRUYEN MOT BYTE VAO I2C ; ;===================================================================; WRITER_I2C: PUSH 00 MOV R0,#8 CLR C WRITER_I2C_1: RLC A MOV SDA,C SETB SCL CLR SCL DJNZ R0,WRITER_I2C_1 SETB SCL ; TAO BIT ACK CLR SCL POP 00 RET ;===================================================================; ; READ I2C ; ;===================================================================; READ_I2C: PUSH 00 CLR C MOV R0,#8 READ_I2C_1: MOV C,SDA SETB SCL CLR SCL RLC A DJNZ R0,READ_I2C_1 SETB SCL ; TAO BIT ACK CLR SCL POP 00 RET ;===================================================================; ; START I2C ; ;===================================================================; START_I2C: SETB SCL SETB SDA CLR SDA CLR SCL RET ;===================================================================; ; STOP I2C ; ;===================================================================; STOP_I2C: SETB SCL CLR SDA SETB SDA RET ;===================================================================; ; TAO TRE THOI GIAN ; ;===================================================================; DELAY: PUSH 00 PUSH 01 MOV R0,#40 DELAY1: MOV R1,#60 DJNZ R1,$ DJNZ R0,DELAY1 POP 01 POP 00 RET ;===================================================================; ; CHUONG TIRNH CON PHUC VU NGAT ; ;===================================================================; TIME0: CLR C CLR TR0 MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) INC R3 CJNE R3,#6,KT_C KT_C: JC THOAT CPL P3.3 MOV R3,#0 THOAT: SETB TR0 RETI ;===================================================================; MA_7_SEG: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END
/7c6178161d8b4a10992e1036921b4237_49328629.untitled .png[/img]
READ_TIME_DS1307_UPDATE.7z
các bạn xem hộ mình cái (mình nghĩ vấn đề là nằm ở hai khối mình bôi đỏ, vì thao tác chỉnh xủa thời gian trong DS1307 chỉ liên quan tới hai khối lệnh đó).
thank.Last edited by huuthobka; 21-09-2012, 19:51.
Comment
-
Nguyên văn bởi huuthobka Xem bài viếtMình đang làm về mạch đồng hồ số sử dụng DS1307 hiển thị lên 7-seg, hiển thị và đọc thì ổn rồi, nhưng bài của mình gặp một lỗi là, khi mình nhấn nút để cài đặt cho ds1307 thì đồng hồ không update thời gian mình cài đặt vào:
đây là code và mạch mô phỏng của mình:
Code:;======================================================================== ; DINH NGHIA CAC BIEN SE DUNG GIAY EQU 30H PHUT EQU 31H GIO EQU 32H NGAY EQU 33H THANG EQU 34H NAM EQU 35H TAM1 EQU 36H ADDRESS EQU 37H DEM EQU 38H DATAS EQU 39H MENU BIT P3.0 TANG BIT P3.1 CHON BIT P3.2 SDA BIT P2.7 SCL BIT P2.6 ;======================================================================== ORG 0000H LJMP MAIN0 ; NHAY RA KHOI VECTOR NGAT ORG 000BH LJMP TIME0 ; NHAY DEN DIA CHI NGAT ;========================================================================; ; BAT DAU CHUONG TRINH CHINH ; ;========================================================================; ORG 0030H MAIN0: MOV P3,#0FFH MOV P2,#00H MOV TMOD,#01H MOV DEM,#00H MOV R3,#0 CLR P3.3 MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) MOV DPTR,#MA_7_SEG MOV P0,#0FFH SETB EA SETB ET0 CLR TF0 SETB TR0 MAIN1: ACALL QUET_PHIM ACALL READ JNB CHON,MAIN2 ; CHON HIEN THI NGAY THANG HAY HIEN THI GIO ACALL HIEN_THI_TG JMP MAIN1 MAIN2: ACALL HIEN_THI_NT LJMP MAIN1 ;=================================================================; ; QUET PHIM DE CAI DAT CHO DONG HO ; ;=================================================================; QUET_PHIM: PUSH 00 JB MENU,THOAT_RA ; KIEM TRA XEM CO MUON CAI DAT KHONG ACALL DELAY JNB MENU,$ ; DOI NHA NUT ;======================================== ; THAO TAC VOI GIO ; ;======================================== SETUP_GIO: JB TANG,HTHI_H JNB TANG,$ INC GIO MOV A,GIO CJNE A,#24H,HTHI_H MOV GIO,#00H HTHI_H: ACALL HIEN_THI_GIO JB MENU,SETUP_GIO ; DOI CHINH PHUT JNB MENU,$ ; DOI NHA NUT ;======================================== ; THAO TAC VOI PHUT ; ;======================================== SETUP_PHUT: JB TANG,HTHI_M INC PHUT JNB TANG,$ MOV A,PHUT CJNE A,#60H,HTHI_M MOV PHUT,#00H HTHI_M: ACALL HIEN_THI_PHUT JB MENU,SETUP_PHUT ; DOI CHINH GIAY JNB MENU,$ ; DOI NHA NUT ;======================================== ; THAO TAC VOI GIAY ; ;======================================== SETUP_GIAY: JB TANG,HTHI_S INC GIAY JNB TANG,$ MOV A,GIAY CJNE A,#60H,HTHI_S MOV GIAY,#00H HTHI_S: ACALL HIEN_THI_GIAY JB MENU,SETUP_GIAY ACALL DELAY JNB MENU,$ ;======================================== ; GHI DU LIEU VAO DS1307 ; ;======================================== MOV ADDRESS,#00H MOV DATAS,GIAY ACALL WRITER_DS1307 MOV ADDRESS,#01H MOV DATAS,PHUT ACALL WRITER_DS1307 MOV ADDRESS,#02H MOV DATAS,GIO ACALL WRITER_DS1307 MOV A,#15H ;GIA TRI KIEM TRA DS ACALL WRITER_DS1307 ACALL STOP_I2C ;======================================== THOAT_RA: POP 00 RET ;===================================================================; ; DOC NGAY THANG NAM ; ;===================================================================; READ: ACALL READ_GIAY ACALL READ_PHUT ACALL READ_GIO ACALL READ_NGAY ACALL READ_THANG ACALL READ_NAM RET READ_GIAY: MOV TAM1,#00H ACALL READ_DS1307 ACALL GIAI_MA MOV GIAY,TAM1 RET ;======================================== READ_PHUT: MOV TAM1,#01H ACALL READ_DS1307 ACALL GIAI_MA MOV PHUT,TAM1 RET ;======================================== READ_GIO: MOV TAM1,#02H ACALL READ_DS1307 ACALL GIAI_MA MOV GIO,TAM1 RET ;======================================== READ_NGAY: MOV TAM1,#04H ACALL READ_DS1307 ACALL GIAI_MA MOV NGAY,TAM1 RET ;======================================== READ_THANG: MOV TAM1,#05H ACALL READ_DS1307 ACALL GIAI_MA MOV THANG,TAM1 RET ;======================================== READ_NAM: MOV TAM1,#06H ACALL READ_DS1307 ACALL GIAI_MA MOV NAM,TAM1 RET ;===================================================================; ; GIAI MA TU BCD SANG HEX ; ;===================================================================; GIAI_MA: PUSH 00 MOV R0,#01H MOV B,#16 DIV AB MOV R0,B MOV B,#10 MUL AB ADD A,R0 MOV TAM1,A POP 00 RET ;===================================================================; ; HIEN THI THOI GIAN TRONG NGAY ; ;===================================================================; HIEN_THI_TG: ACALL HIEN_THI_GIO ACALL HIEN_THI_PHUT ACALL HIEN_THI_GIAY RET HIEN_THI_GIO: MOV A,GIO MOV B,#10 DIV AB MOVC A,@A+DPTR MOV P0,A SETB P2.0 ACALL DELAY CLR P2.0 MOV A,B MOVC A,@A+DPTR MOV P0,A SETB P2.1 ACALL DELAY CLR P2.1 RET ;======================================== HIEN_THI_PHUT: MOV A,PHUT MOV B,#10 DIV AB MOVC A,@A+DPTR MOV P0,A SETB P2.2 ACALL DELAY CLR P2.2 MOV A,B MOVC A,@A+DPTR MOV P0,A SETB P2.3 ACALL DELAY CLR P2.3 RET ;======================================== HIEN_THI_GIAY: MOV A,GIAY MOV B,#10 DIV AB MOVC A,@A+DPTR MOV P0,A SETB P2.4 ACALL DELAY CLR P2.4 MOV A,B MOVC A,@A+DPTR MOV P0,A SETB P2.5 ACALL DELAY CLR P2.5 RET ;===================================================================; ; HIEN THI THONG SO CUA NAM ; ;===================================================================; HIEN_THI_NT: ACALL HIEN_THI_NGAY ACALL HIEN_THI_THANG ACALL HIEN_THI_NAM RET HIEN_THI_NGAY: MOV A,NGAY MOV B,#10 DIV AB MOVC A,@A+DPTR MOV P0,A SETB P2.0 ACALL DELAY CLR P2.0 MOV A,B MOVC A,@A+DPTR MOV P0,A SETB P2.1 ACALL DELAY CLR P2.1 RET ;======================================== HIEN_THI_THANG: MOV A,THANG MOV B,#10 DIV AB MOVC A,@A+DPTR MOV P0,A SETB P2.2 ACALL DELAY CLR P2.2 MOV A,B MOVC A,@A+DPTR MOV P0,A SETB P2.3 ACALL DELAY CLR P2.3 RET ;======================================== HIEN_THI_NAM: MOV A,NAM MOV B,#10 DIV AB MOVC A,@A+DPTR MOV P0,A SETB P2.4 ACALL DELAY CLR P2.4 MOV A,B MOVC A,@A+DPTR MOV P0,A SETB P2.5 ACALL DELAY CLR P2.5 RET ;===================================================================; ; READ DS1307: DOC MOT BYTE TU DS1307 ; ;===================================================================; READ_DS1307: ACALL START_I2C MOV A,#0D0H ACALL WRITER_I2C MOV A,TAM1 ACALL WRITER_I2C ACALL STOP_I2C ACALL START_I2C MOV A,#0D1H ACALL WRITER_I2C ACALL READ_I2C ACALL STOP_I2C RET ;===================================================================; ; WRITER_DS1307 : VIET MOT BYTE VAO DS1307 ; ;===================================================================; WRITER_DS1307: ACALL START_I2C MOV A,#0D0H ACALL WRITER_I2C ACALL START_I2C MOV A,ADDRESS ACALL WRITER_I2C ACALL START_I2C ACALL GIAI_MA_HEX ACALL WRITER_I2C ACALL STOP_I2C RET ;========================================; ; CHUYEN TU HEXAN SANG BCD ; ;========================================; GIAI_MA_HEX: PUSH 00 MOV A,DATAS MOV B,#10 DIV AB MOV R0,B MOV B,#16 MUL AB ORL A,R0 POP 00 RET ;===================================================================; ; WRITER I2C : CACH TRUYEN MOT BYTE VAO I2C ; ;===================================================================; WRITER_I2C: PUSH 00 MOV R0,#8 CLR C WRITER_I2C_1: RLC A MOV SDA,C SETB SCL CLR SCL DJNZ R0,WRITER_I2C_1 SETB SCL ; TAO BIT ACK CLR SCL POP 00 RET ;===================================================================; ; READ I2C ; ;===================================================================; READ_I2C: PUSH 00 CLR C MOV R0,#8 READ_I2C_1: MOV C,SDA SETB SCL CLR SCL RLC A DJNZ R0,READ_I2C_1 SETB SCL ; TAO BIT ACK CLR SCL POP 00 RET ;===================================================================; ; START I2C ; ;===================================================================; START_I2C: SETB SCL SETB SDA CLR SDA CLR SCL RET ;===================================================================; ; STOP I2C ; ;===================================================================; STOP_I2C: SETB SCL CLR SDA SETB SDA RET ;===================================================================; ; TAO TRE THOI GIAN ; ;===================================================================; DELAY: PUSH 00 PUSH 01 MOV R0,#40 DELAY1: MOV R1,#60 DJNZ R1,$ DJNZ R0,DELAY1 POP 01 POP 00 RET ;===================================================================; ; CHUONG TIRNH CON PHUC VU NGAT ; ;===================================================================; TIME0: CLR C CLR TR0 MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) INC R3 CJNE R3,#6,KT_C KT_C: JC THOAT CPL P3.3 MOV R3,#0 THOAT: SETB TR0 RETI ;===================================================================; MA_7_SEG: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END
/7c6178161d8b4a10992e1036921b4237_49328629.untitled .png[/img]
[ATTACH=CONFIG]52153[/ATTACH]
READ_TIME_DS1307_UPDATE.7z
các bạn xem hộ mình cái (mình nghĩ vấn đề là nằm ở hai khối mình bôi đỏ, vì thao tác chỉnh xủa thời gian trong DS1307 chỉ liên quan tới hai khối lệnh đó).
thank.
sai chổ này ;
;========================================
; GHI DU LIEU VAO DS1307 ;
;========================================
MOV ADDRESS,#00H
MOV DATAS,GIAY
ACALL WRITER_DS1307
MOV ADDRESS,#01H
MOV DATAS,PHUT
ACALL WRITER_DS1307
MOV ADDRESS,#02H
MOV DATAS,GIO
ACALL WRITER_DS1307
MOV A,#15H ;GIA TRI KIEM TRA DS
ACALL WRITER_DS1307
ACALL STOP_I2C
bạn sữa lại là nên ghi từng cái riêng
ví dụ ghi giơ;
MOV A,#0D0H
LCALL START_I2C
LCALL WRITER_I2C
MOV A,#02H
LCALL WRITER_I2C
MOV A,GIO
ACALL GIAI_MA_HEX;chổ nay bỏ MOV A,DATAS đi
LCALL WRITER_I2C
LCALL STOP_I2C
ghi phut và giay cũng nhu thế,
chúc thành công!
Comment
-
Nguyên văn bởi CONGMINHfs Xem bài viết_____________________________________________
sai chổ này ;
;========================================
; GHI DU LIEU VAO DS1307 ;
;========================================
MOV ADDRESS,#00H
MOV DATAS,GIAY
ACALL WRITER_DS1307
MOV ADDRESS,#01H
MOV DATAS,PHUT
ACALL WRITER_DS1307
MOV ADDRESS,#02H
MOV DATAS,GIO
ACALL WRITER_DS1307
MOV A,#15H ;GIA TRI KIEM TRA DS
ACALL WRITER_DS1307
ACALL STOP_I2C
bạn sữa lại là nên ghi từng cái riêng
ví dụ ghi giơ;
MOV A,#0D0H
LCALL START_I2C
LCALL WRITER_I2C
MOV A,#02H
LCALL WRITER_I2C
MOV A,GIO
ACALL GIAI_MA_HEX;chổ nay bỏ MOV A,DATAS đi
LCALL WRITER_I2C
LCALL STOP_I2C
ghi phut và giay cũng nhu thế,
chúc thành công!
nhưng bạn cho mình hỏi là đoạn code đó mình viết xao nó không ghi được vào DS1307 nhỉ ? theo mình thì dòng này của bạn:Code:MOV A,#0D0H LCALL START_I2C LCALL WRITER_I2C MOV A,#02H LCALL WRITER_I2C MOV A,GIO ACALL GIAI_MA_HEX;chổ nay bỏ MOV A,DATAS đi LCALL WRITER_I2C LCALL STOP_I2C
Code:MOV ADDRESS,#02H MOV DATAS,GIO ACALL WRITER_DS1307
Không nhiểu có điều gì đó mình đang mắc phải ở đây, mong bạn chỉ giúp
thank
Comment
Bài viết mới nhất
Collapse
-
bởi nhathung1101Muốn đặt gì thì cũng phải có thông tin cơ bản. Việc nhỏ thế này mà phải dấu giếm thì người lớn không thèm làm đâu.
Cho bạn 3 ngày, không là sẽ xóa.-
Channel: Đặt hàng
Hôm qua, 22:02 -
-
Trả lời cho Hỏi cách điều chế xungbởi nhathung1101Schmit Trigger là chuẩn với điều kiện rise > 0,8V.
Bí thì dùng vi với tích gì đó, miễn đừng nói phân kẻo chó ở đây lại sủa nhặng.-
Channel: Kỹ thuật điện tử tương tự
Hôm qua, 21:57 -
-
bởi trungautMình cần đặt hàng thiết kế chế tạo mạch nghịch lưu 3 pha để cài đặt các thuật toán điều khiển động cơ FOC, DTC, ... Xin liên hệ trungaut@gmail.com để bàn chi tiết. Xin cảm ơn diễn dàn đăng tin!
-
Channel: Đặt hàng
Hôm qua, 14:27 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi tuyennhanCách ly dây điện vào , bộ nguồn và đèn khỏi khung xe thì có rò thật cũng không lo bị giật .
-
Channel: Điện tử dành cho người mới bắt đầu
21-12-2024, 08:56 -
-
Trả lời cho Hỏi cách điều chế xungbởi thetungBạn cho qua cái Tờ ri gơ Sờ mít ấy ......
-
Channel: Kỹ thuật điện tử tương tự
16-12-2024, 11:26 -
-
Trả lời cho Hỏi cách điều chế xungbởi nguyendinhvanCó gì mà khó ?
Răn cưa vuông đây
...-
Channel: Kỹ thuật điện tử tương tự
15-12-2024, 23:36 -
-
Trả lời cho hỏi về tụ điệnbởi ndp62Chữ " VENT" không phải là tên hãng sx tụ đâu ,vó thế là 1 ký hiệu liên quan tụ lowesr ?
-
Channel: Điện thanh
15-12-2024, 18:24 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi bqvietTrừ trường hợp công suất (rất) thấp, hầu như tất cả các loại nguồn xung thông thường đều có tụ nhỏ 1 - 10nF nối giữa sơ cấp và thứ cấp, để thoát nhiễu và để chống hiện tượng tương tự tĩnh điện. Vụ này đã thảo luận vài...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 22:02 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi namlangnhoE thử 3 cái nguồn nó đều giống nhau. Nên e làm tiếp địa luôn.
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 19:58 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi mèomướpDạ chú sắm con át chống giật và thay nguồn tổ ong khác cho an toàn ạ. Đa phần nguồn xung đều xả nhiễu của bên thứ cấp về điện lưới qua 1 con tụ nên cảm giác tê sẽ khó xác định rõ ràng là do rò điện hay là nó vốn vậy...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 18:51 -
Comment