Chương5: CH ƯƠ NG TRÌNH NHẬP SỐ BCD TỪ BÀN PHÍM READ_BCD:;8 bit READ_BCD_1:; DOC SO BCD THU 1 LCALL SCAN_KEYPAD CJNE A,#0AH,NOT_EQUAL1 LJMP READ_BCD_1 NOT_EQUAL1: JNC IS_ESC;CHI DOC NHUNG SO TU 0-9 MOV R7,A LCALL WRITE_DIGIT CLR BIT_ESC LJMP READ_BCD_2 IS_ESC: CJNE A,#27H,READ_BCD_1 LJMP NOT_READ_BCD READ_BCD_2:;DOC SO BCD THU 2 LCALL SCAN_KEYPAD CJNE A,#13H,RB1 LJMP READ_BCD_COMPLISH RB1: CJNE A,#27H,RB2 LJMP NOT_READ_BCD RB2: CJNE A,#0AH,NOT_EQUAL2 LJMP READ_BCD_2 NOT_EQUAL2: JNC READ_BCD_2 CLR BIT_ESC PUSH ACC MOV A,R7 SWAP A ANL A,#0F0H;LOAI BO 4 BIT THAP MOV R7,A POP ACC ORL A,R7 MOV R7,A LCALL WRITE_DIGIT LJMP READ_BCD_2 NOT_READ_BCD: SETB BIT_ESC READ_BCD_COMPLISH: MOV A,R7 RET CH ƯƠNG TRÌNH YEU CAU NHAP PHIM DIEU KHIEN READ_CONTROL_KEY: LCALL SCAN_KEYPAD CJNE A,#13H,IS_CONTROL_KEY IS_CONTROL_KEY: JC READ_CONTROL_KEY RET CH ƯƠNG TRÌNH LẤY GIỜ TỪ BÀN PHÍM VÀ CÀI GIỜ CHO RTC GET_CLOCK: ;GET_HOUR CLR BIT_ESC SETB GET_HOUR;CAC BIT NAY DE CHO CHUONG TRINH GHI SO BIT CLR GET_MINUTE CLR GET_SECOND LCALL READ_BCD JB BIT_ESC,NO_SET_CLOCK MOV HOUR,R7 ;GET MINUTE CLR GET_HOUR SETB GET_MINUTE CLR GET_SECOND LCALL READ_BCD JB BIT_ESC,NO_SET_CLOCK MOV MINUTE,R7 ;GET SECOND CLR GET_HOUR CLR GET_MINUTE SETB GET_SECOND LCALL READ_BCD JB BIT_ESC,NO_SET_CLOCK MOV SECOND,R7 CLR GET_HOUR CLR GET_MINUTE CLR GET_SECOND LCALL READ_CONTROL_KEY CJNE A,#13H,NO_SET_CLOCK LCALL SET_CLOCK RET NO_SET_CLOCK: SETB BIT_ESC RET CHƯƠNG TRÌNH GHI SO LÚC PHAM GIO BAN PHIM WRITE_DIGIT: JB GET_HOUR,WRITE_HOUR CH ƯƠNG TRÌNH NH ẬP SỐ BCD TỪ BÀN PHÍM READ_BCD:;8 bit READ_BCD_1:; DOC SO BCD THU 1 LCALL SCAN_KEYPAD CJNE A,#0AH,NOT_EQUAL1 LJMP READ_BCD_1 NOT_EQUAL1: JNC IS_ESC;CHI DOC NHUNG SO TU 0-9 MOV R7,A LCALL WRITE_DIGIT CLR BIT_ESC LJMP READ_BCD_2 IS_ESC: CJNE A,#27H,READ_BCD_1 LJMP NOT_READ_BCD READ_BCD_2:;DOC SO BCD THU 2 LCALL SCAN_KEYPAD CJNE A,#13H,RB1 LJMP READ_BCD_COMPLISH RB1: CJNE A,#27H,RB2 LJMP NOT_READ_BCD RB2: CJNE A,#0AH,NOT_EQUAL2 LJMP READ_BCD_2 NOT_EQUAL2: JNC READ_BCD_2 CLR BIT_ESC PUSH ACC MOV A,R7 SWAP A ANL A,#0F0H;LOAI BO 4 BIT THAP MOV R7,A POP ACC ORL A,R7 MOV R7,A LCALL WRITE_DIGIT LJMP READ_BCD_2 NOT_READ_BCD: SETB BIT_ESC READ_BCD_COMPLISH: MOV A,R7 RET CH ƯƠNG TRÌNH YEU CAU NHAP PHIM DIEU KHIEN READ_CONTROL_KEY: LCALL SCAN_KEYPAD CJNE A,#13H,IS_CONTROL_KEY IS_CONTROL_KEY: JC READ_CONTROL_KEY RET CH ƯƠNG TRÌNH LẤY GIỜ TỪ BÀN PHÍM VÀ CÀI GIỜ CHO RTC GET_CLOCK: ;GET_HOUR CLR BIT_ESC SETB GET_HOUR;CAC BIT NAY DE CHO CHUONG TRINH GHI SO BIT CLR GET_MINUTE CLR GET_SECOND LCALL READ_BCD JB BIT_ESC,NO_SET_CLOCK MOV HOUR,R7 ;GET MINUTE CLR GET_HOUR SETB GET_MINUTE CLR GET_SECOND LCALL READ_BCD JB BIT_ESC,NO_SET_CLOCK MOV MINUTE,R7 ;GET SECOND CLR GET_HOUR CLR GET_MINUTE SETB GET_SECOND LCALL READ_BCD JB BIT_ESC,NO_SET_CLOCK MOV SECOND,R7 CLR GET_HOUR CLR GET_MINUTE CLR GET_SECOND LCALL READ_CONTROL_KEY CJNE A,#13H,NO_SET_CLOCK LCALL SET_CLOCK RET NO_SET_CLOCK: SETB BIT_ESC RET CH ƯƠNG TRÌNH GHI SO LÚC PHAM GIO BAN PHIM JB GET_HOUR,WRITE_MINUTE JB GET_HOUR,WRITE_SECOND LJMP EXIT_WRITE_DIGIT WRITE_HOUR: MOV A,HOUR ANL A,#0F0H SWAP A CLR EN2 MOV P1,A SETB EN2;CHOT DU LIEU MOV A,HOUR ANL A,#0FH CLR EN3 MOV P1,A SETB EN3 LJMP EXIT_WRITE_DIGIT WRITE_MINUTE: MOV A,MINUTE ANL A,#0F0H SWAP A CLR EN4 MOV P1,A SETB EN4;CHOT DU LIEU MOV A,MINUTE ANL A,#0FH CLR EN5 MOV P1,A SETB EN5;CHOT DU LIEU . Chương5 : CH ƯƠ NG TRÌNH NHẬP SỐ BCD TỪ BÀN PHÍM READ _BCD: ;8 bit READ _BCD_ 1:; DOC SO BCD THU 1 LCALL SCAN_KEYPAD CJNE A,#0AH,NOT_EQUAL1 LJMP READ _BCD_ 1. BIT_ESC RET CHƯƠNG TRÌNH GHI SO LÚC PHAM GIO BAN PHIM WRITE_DIGIT: JB GET_HOUR,WRITE_HOUR CH ƯƠNG TRÌNH NH ẬP SỐ BCD TỪ BÀN PHÍM READ _BCD: ;8 bit READ _BCD_ 1:;