Chương2 :Các chương trình phục vụ cho RTC 1. SEND_START (Gửi điều kiện START) 2.

Chia sẻ: Nguyen Van Dau | Ngày: | Loại File: PDF | Số trang:14

0
134
lượt xem
65
download

Chương2 :Các chương trình phục vụ cho RTC 1. SEND_START (Gửi điều kiện START) 2.

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tham khảo tài liệu 'chương2 :các chương trình phục vụ cho rtc 1. send_start (gửi điều kiện start) 2.', kỹ thuật - công nghệ, điện - điện tử phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Chủ đề:
Lưu

Nội dung Text: Chương2 :Các chương trình phục vụ cho RTC 1. SEND_START (Gửi điều kiện START) 2.

  1. Chương2 :Các chương trình phục vụ cho RTC 1. SEND_START (Gửi điều kiện START) 2. SEND_STOP (Gửi điều kiện STOP) 3. SCL_HIGH (đưa SCL lên mức cao) 4. SEND_BYTE (gửi byte vào RTC) 5. READ_BYTE (đọc byte từ RTC) 6. READ_CLOCK (đọc giờ từ RTC) 7. SET_CLOCK (cài đặt giờ RTC) 8. READ_RAM (đọc 56 byte từ RTC) 9. SET_RAM (ghi 56 byte vào RTC) 10. OSC_CONTROL (Điều khiển bộ dao động trong RTC) 11. SQW_CONTROL_1HZ (xuất xung 1Hz ở chân 7 của RTC) 12. SQW_CONTROL_4KHZ(xuất xung 4.096KHz ở chân 7 của RTC) 13. SQW_CONTROL_8KHZ(xuất xung 8.192Hz ở chân 7 của RTC) 14. SQW_CONTROL_32KHZ(xuất xung 32.768Hz ở chân 7 của RTC) 15. ALARM_TEST (kiểm tra báo thức) ;START CONDITION
  2. SEND_START: CLR NO_START JB _2W_BUSY,SEND_START_ERROR SETB _2W_BUSY CLR ACK JNB SCL,SEND_START_ERROR JNB SDA,SEND_START_ERROR SETB SDA LCALL SCL_HIGH LCALL DELAY CLR SDA LCALL DELAY; CLR SCL RET SEND_START_ERROR: SETB NO_START RET ;=============================================== ;STOP CONDITION SEND_STOP:
  3. CLR SDA LCALL SCL_HIGH LCALL DELAY SETB SDA NOP JNB SDA,$ CLR _2W_BUSY RET ;================================================ ;SEND BYTE ;DUA GIA TRI TRONG THANH GHI A VAO DS1307 SEND_BYTE: MOV BITCOUNT,#8H SEND_BYTE_LOOP: JNB ACC.7,LEVEL_LOW SETB SDA AJMP SEND_BITS LEVEL_LOW: CLR SDA SEND_BITS:
  4. ; NOP ; NOP ; NOP LCALL SCL_HIGH LCALL DELAY CLR SCL;KET THUC 1 XUNG NHIP RL A DJNZ BITCOUNT,SEND_BYTE_LOOP SETB SDA;CAU HINH DE NHAN XUNG ACK NOP LCALL SCL_HIGH ; NOP ; NOP ; NOP CLR ACK JNB SDA,SEND_BYTE_COMPLISH SETB ACK SEND_BYTE_COMPLISH: LCALL DELAY CLR SCL LCALL DELAY RET
  5. ;=============================================\ ;DOC GIA TRI VAO A READ_BYTE: MOV BITCOUNT,#8H MOV A,#00H SETB SDA READ_BITS: LCALL SCL_HIGH ; NOP ; NOP ; NOP MOV C,SDA RLC A;DUA SDA VAO THANH GHI A CLR SCL ; NOP NOP ; NOP DJNZ BITCOUNT,READ_BITS JB LAST_READ,NOT_ACK;NEU LA LAN DOC CUOI CUNG THI KHONG GUI ACK
  6. CLR SDA;GUI ACK BIT NOT_ACK: LCALL SCL_HIGH CLR SCL RET; SCL_HIGH: SETB SCL JNB SCL,$ NOP RET READ_CLOCK: MOV R0,#25H MOV BYTECOUNT,#00 CLR LAST_READ LCALL SEND_START MOV A,#0D0H;WRITE COMMAND LCALL SEND_BYTE MOV A,#00H;DAT DIA CHI LAM VIEC LCALL SEND_BYTE LCALL SEND_STOP
  7. LCALL SEND_START MOV A,#0D1H;READ LCALL SEND_BYTE READ_LOOP: MOV A,BYTECOUNT CJNE A,#07H,NOTLAST SETB LAST_READ NOTLAST: LCALL READ_BYTE MOV @R0,A INC R0 INC BYTECOUNT MOV A,BYTECOUNT CJNE A,#00H,NOT_FIRST CLR OSC MOV A,@R0 JNB ACC.7,NO_OSC SETB OSC CLR ACC.7 MOV @R0,A NO_OSC: NOT_FIRST:
  8. CJNE A,#8H,READ_LOOP RET SQW_CONTROL_1HZ: LCALL SEND_START MOV A,#0D0H LCALL SEND_BYTE MOV A,#07H;DAT DIA CHI LAM VIEC LCALL SEND_BYTE MOV A,#80H JNB SQW,TURN_OFF_SQW1 MOV A,#90H TURN_OFF_SQW1: LCALL SEND_BYTE LCALL SEND_STOP RET SQW_CONTROL_4KHZ: LCALL SEND_START MOV A,#0D0H LCALL SEND_BYTE MOV A,#07H;DAT DIA CHI LAM VIEC
  9. LCALL SEND_BYTE MOV A,#81H JNB SQW,TURN_OFF_SQW2 MOV A,#91H TURN_OFF_SQW2: LCALL SEND_BYTE LCALL SEND_STOP RET SQW_CONTROL_8KHZ: LCALL SEND_START MOV A,#0D0H LCALL SEND_BYTE MOV A,#07H;DAT DIA CHI LAM VIEC LCALL SEND_BYTE MOV A,#82H JNB SQW,TURN_OFF_SQW3 MOV A,#92H TURN_OFF_SQW3: LCALL SEND_BYTE LCALL SEND_STOP RET SQW_CONTROL_32KHZ:
  10. LCALL SEND_START MOV A,#0D0H LCALL SEND_BYTE MOV A,#07H;DAT DIA CHI LAM VIEC LCALL SEND_BYTE MOV A,#83H JNB SQW,TURN_OFF_SQW4 MOV A,#93H TURN_OFF_SQW4: LCALL SEND_BYTE LCALL SEND_STOP RET ;*********************************** READ_RAM: MOV R0,#30H MOV BYTECOUNT,#00H CLR LAST_READ LCALL SEND_START MOV A,#0D0H;WRITE COMMAND LCALL SEND_BYTE
  11. MOV A,#08H LCALL SEND_BYTE;DAT DIA CHI LAM VIEC LCALL SEND_STOP LCALL SEND_START MOV A,#0D1H;READ COMMAND LCALL SEND_BYTE READ_RAM_LOOP1: MOV A,BYTECOUNT CJNE A,#55,NOT_LAST2;KHONG PHAI LAN DOC CUOI CUNG SETB LAST_READ NOT_LAST2: LCALL READ_BYTE MOV @R0,A INC R0 INC BYTECOUNT MOV A,BYTECOUNT CJNE A,#56,READ_RAM_LOOP1 LCALL SEND_STOP RET
  12. SET_RAM: MOV R0,#30H MOV BYTECOUNT,#00H LCALL SEND_START MOV A,#0D0H;WRITE COMMAND LCALL SEND_BYTE MOV A,#08H LCALL SEND_BYTE;DIA CHI LAM VIEC SET_RAM_LOOP: MOV A,@R0 LCALL SEND_BYTE INC R0 INC BYTECOUNT MOV A,BYTECOUNT CJNE A,#38H,SET_RAM_LOOP LCALL SEND_STOP RET OSC_CONTROL: LCALL SEND_START MOV A,#0D0H;WRITE COMMAND LCALL SEND_BYTE MOV A,#00H
  13. LCALL SEND_BYTE LCALL SEND_STOP LCALL SEND_START MOV A,#0D1H;READ COMMAND LCALL SEND_BYTE SETB LAST_READ LCALL READ_BYTE PUSH ACC;CAT SECOND TRONG REAL TIMER LCALL SEND_STOP LCALL SEND_START MOV A,#0D0H;WRITE COMMAND LCALL SEND_BYTE MOV A,#00H LCALL SEND_BYTE JB OSC,OSC_ON POP ACC SETB ACC.7;OSC DISABLE LJMP SET_OSC OSC_ON: POP ACC CLR ACC.7 SET_OSC:
  14. LCALL SEND_BYTE LCALL SEND_STOP RET ALARM_TEST: JNB ALARM,EXIT_ALARM MOV A,MINUTE CJNE A,MINUTE_ALARM,EXIT_ALARM MOV A,HOUR CJNE A,HOUR_ALARM,EXIT_ALARM CLR P3.6;BAO THUC EXIT_ALARM: SETB P3.6;TAT BAO THUC RET

CÓ THỂ BẠN MUỐN DOWNLOAD

Đồng bộ tài khoản