We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi guys. I changed my board to C8051F226 already and i'm using a 32.768kHz external crystal. I have read the datasheet for the oscillator. But i do not understand this sentence, can someone please explain it to me?
"Crystal Oscillator Mode with divide by 2 stage."
The datasheet also recommend me to do the following:
1.Enable the external oscillator 2.Wait 1 ms 3.Poll for XTLVLD '0' ==> '1' 4.Switch to the external oscillator
I have done the 1st 2 steps, but i can't seem to poll for XTLVLD. When i compile, it says undefined symbol.
MOV R1,OSCXCN WAIT1:CJNE R1,#80H,WAIT1
Isit advisable to use the above code?
I can run using the above code. But whenever i run, it will hang at the 1st line when it runs to the oscillator config routine.
This is my oscillator routine.
MOV OSCICN,#08H ; Disable internal oscillator & enable external oscillator ACALL DELAY MOV R1,OSCXCN WAIT1:CJNE R1,#80H,WAIT1 ; poll to see whether crystal is ready MOV OSCXCN,#32H ; config external crystal
Does it have something to do with my crystal or my programming?
Don't you think that you have to continuously read the value from OSCICN in you wait loop?
Why do i have to continously read value from OSCICN in my "wait" loop? OSCICN does not have any bits for me to poll. All the bits in OSCICN have been configured.
your wait-loop is going to loop untill OSCICN equals exactly 0x80. you want to mask the other bits and then test for bit 7. You could do a 'bitwise AND' of 0x80 and OSCICN, if the value is not zero then bit 7 is set.
OSCXCN you mean? Can you explain it in simpler terms? I can't really get you.
Since OSCXCN is not bit-addressable you need to use a different method of testing bit7. You should learn about bitwise operations; en.wikipedia.org/.../Bitwise_operation
MOV R1, OSCXCN ; Copies the current value from OSCXCN to R1 WAIT1: CJNE R1, #80H, WAIT1 ; Continually checks R1
If the value in OSCXCN changes, how will that affect R1 in your loop?