Frosty_47
New Member
Hello, can some one plz verify my code below to be correct as I have no means of making sure it is at the moment. Thanks
The task is to write a program that causes Port 1 to act as an 8-bit up counter. Include a 500msec delay (not including overhead) to slow the count sufficiently to observe in hardware. Use Timers to produce the delay.
Here is my code (based on 12Mhz XTAL):
CLR A
START: MOV R2,#10
BACK: MOV TMOD,#01 ;Timer 1 Mode 1
MOV TL1,#0B0H ;TL1 = BOH, Low Byte
MOV TH1,#3CH ;TH1 = 3CH, High Byte
SETB TR1 ;Start Timer
HERE: JNB TF1,HERE ;Stay here until timer rolls over
CLR TR1 ;Stop Timer 1
CLR TF1 ;Clear timer flag
DJNZ R2,BACK ;repeat this 10 times to get 500msec delay
MOV P1,A ;mov A to P1
INC A
SJMP START
;Calculations
;500msec = 500,000uS = 10 * 50000 = 65536 - 50000 = 3CB0H
The task is to write a program that causes Port 1 to act as an 8-bit up counter. Include a 500msec delay (not including overhead) to slow the count sufficiently to observe in hardware. Use Timers to produce the delay.
Here is my code (based on 12Mhz XTAL):
CLR A
START: MOV R2,#10
BACK: MOV TMOD,#01 ;Timer 1 Mode 1
MOV TL1,#0B0H ;TL1 = BOH, Low Byte
MOV TH1,#3CH ;TH1 = 3CH, High Byte
SETB TR1 ;Start Timer
HERE: JNB TF1,HERE ;Stay here until timer rolls over
CLR TR1 ;Stop Timer 1
CLR TF1 ;Clear timer flag
DJNZ R2,BACK ;repeat this 10 times to get 500msec delay
MOV P1,A ;mov A to P1
INC A
SJMP START
;Calculations
;500msec = 500,000uS = 10 * 50000 = 65536 - 50000 = 3CB0H
Last edited: