??? 08/11/04 23:31 Read: times Msg Score: 0 -1 Gimmee Code +1 Underrated |
#75774 - RE: ASM routines libraries? Responding to: ???'s previous message |
Hello Bartosz,
Math wise the 8051 software routines have been beat to death BUT there is still lots to be done in ASSEMBLY. One of the routines I was looking for recently and had to write myself was a "month/day/year" to be part of the real time clock. Below is that routine. I don't think we will ever solve this problem but at least it can be thought thru a little. Regards, Charles Bannister .EQU MONTH1, 0x3F ;; Real Time Clock Month variable .EQU MONTH1BCD, 0x40 ;; Real Time Clock Month variable .EQU DAY1, 0x41 ;; Real Time Clock Day variable .EQU DAY1BCD, 0x42 ;; Real Time Clock Day variable .EQU YEAR1, 0x43 ;; Real Time Clock Year variable .EQU YEAR1BCD, 0x44 ;; Real Time Clock Year variable RTC_A: ... ... ... lcall mmddyy1 ;; increment mm/dd/yy as needed RTC_D: POP PSW POP ACC RETI ;;********************************************************************* ;; Increment day, month and year variables within real time clock ;; Take into account leap years ;; .EQU MONTH1, 0x3F ;; Real Time Clock Month variable ;; .EQU MONTH1BCD, 0x40 ;; Real Time Clock Month variable ;; .EQU DAY1, 0x41 ;; Real Time Clock Day variable ;; .EQU DAY1BCD, 0x42 ;; Real Time Clock Day variable ;; .EQU YEAR1, 0x43 ;; Real Time Clock Year variable ;; .EQU YEAR1BCD, 0x44 ;; Real Time Clock Year variable ;;********************************************************************* mmddyy1: inc DAY1 ;; increment present day MOV A, DAY1BCD ;; INCREMENT DAY BCD ADD A, #0x01 DA A MOV DAY1BCD, A mov a, month1 ;; get current month into accumulator ;; CJNE A, LEAPYEAR, mmddyy?? ;; process leap year here mov dptr, #months2 ;; movc a, @a+dptr ;; get amount of days this month into acc cjne a, day1, mmddyy5 mov day1, #0x01 ;; start new month at 1st mov DAY1BCD, #0x01 ;; update day bcd value inc month1 ;; > MOV A,MONTH1BCD ;; INCREMENT MONTH BCD ADD A,#0x01 DA A MOV MONTH1BCD,A mov a, month1 cjne a, #13, mmddyy5 mov month1, #0x01 ;; start new year with 1st month mov MONTH1BCD, #0x01 ;; update day bcd value inc year1 MOV A,YEAR1BCD ;; INCREMENT YEAR BCD ADD A,#0x01 DA A MOV YEAR1BCD,A mmddyy5: ret months2: .DB 00 ; Fence Post .DB 32 ; January .DB 29 ; February .DB 32 ; March .DB 31 ; April .DB 32 ; May .DB 31 ; June .DB 32 ; July .DB 32 ; August .DB 31 ; September .DB 32 ; October .DB 31 ; November .DB 32 ; December |
Topic | Author | Date |
ASM routines libraries? | 01/01/70 00:00 | |
RE: ASM routines libraries? | 01/01/70 00:00 | |
RE: ASM routines libraries? | 01/01/70 00:00 | |
RE: ASM routines libraries? | 01/01/70 00:00 | |
RE: ASM routines libraries? | 01/01/70 00:00 | |
RE: ASM routines libraries? | 01/01/70 00:00 | |
RE: ASM routines libraries? | 01/01/70 00:00 | |
RE: ASM routines libraries? | 01/01/70 00:00 | |
RE: ASM routines libraries?![]() | 01/01/70 00:00 |