Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
05/09/07 18:39
Read: times


 
Msg Score: 0
 -1 Message Not Useful
 +1 Good Answer/Helpful
#138932 - Code formatted
Responding to: ???'s previous message
At first I would like say that I am a beginner on this field .
I would like to program a microcontroller of Silabs and i use the
C8051FX20-TB.
First I would like to program a PWM with output signal 40kHz.
That is in fact that, what should function first befor it further
goes. Sorry for my bad Englisch.
The second part is a programm to be used for the calculation of 
the phase difference. 
Somebody already had experiences with that and could help me.

Thanks for the efforts

For the first part I had considered following:

 CPU 8051
 INCLUDE stddef51

PWM_OFFVALUE    EQU   10
PWM_ONVALUE     EQU   11
PWM_COUNT       EQU   12
PWM_OUT         EQU P3.0

 SEGMENT code

 ORG 0h

        jmp start

; Interruptbehandlungsroutine Timer 0
; Jeder Durchlauf braucht 9 Zyklen

 ORG 0Bh

        djnz PWM_COUNT, pwm_exit
        jb PWM_OUT, pwm_on

pwm_off:

        mov PWM_COUNT, PWM_ONVALUE
        setb PWM_OUT
        reti
pwm_on:        

        mov PWM_COUNT, PWM_OFFVALUE
        clr PWM_OUT

pwm_exit:

        reti

; Initialisierung

start:

        mov TL0, #235
        mov TH0, #235
        mov SP,  #20h
        mov TMOD,#2
        mov TCON,#16
        mov IE,  #130

; Hauptprogramm
main:

        ; quick 'n dirty Parameter als Test von P1 holen
        mov a,P1
        subb a,#20
        mov PWM_ONVALUE, a
        subb a,#255
        mov PWM_OFFVALUE, a
        jmp main
END

---------------------------------------------------------------

If I enter the code so nothing with my microcontroller passes. 
Just I initialize still anything?
Or is something wrong?

Thats the first Question i have!!



For the second part I read through the PCA Cookbook and I wanted 
to attempt following:


; Befehl wo Daten gespeichert werden sollen im RAM

CAPTURE_0 DATA 30H
CAPTURE_1 DATA 32H
PHASE DATA 34H
FLAG_0 BIT 20H.0
FLAG_1 BIT 20H.1
;

ORG 0000H

JMP PCA_INIT
ORG 0033H
JMP PCA_INTERRUPT

;

PCA_INIT:				; PCA Timer 

initialisieren
	
MOV	CMOD, #00H
MOV	CH, #00H
MOV	CL, #00H				

; in Listing 1. Initialize two PCA modules as follows
;

MOV CCAPM0, #21H 			
MOV CCAPM1, #21H 			
;

SETB	EC				;Einschalten PCA interrupt
SETB	EA				
SETB	CR				;PCA Timer einschalten ( Zähler Bit)
CLR	FLAG				;Reset Test Flag

;***************************************************************
; Hauptprogramm
;***************************************************************

; Im Hauptprogramm werden nur Modul 0 und Modul 1 verwendet. 

PCA_INTERRUPT:
JB CCF0, MODULE_0 			
JB CCF1, MODULE_1			
;	

MODULE_0:
	CLR CCF0 			
	MOV CAPTURE_0, CCAP0L 		
	MOV CAPTURE_0+1, CCAP0H
	JB FLAG_1, CALCULATE_PHASE 	

SETB FLAG_0 				
RETI
MODUL_1:

	CLR CCF_1 			
	MOV CAPTURE_1, CCAP1L
	MOV CAPTURE_1+1, CCAP1H
        JB FLAG_0, CALCULATE_PHASE 		
        SETB FLAG_1 				

        RETI					 
					 
					 
					
					
					
;
CALCULATE_PHASE:

	PUSH ACC 				
	PUSH PSW 			 
	CLR C 							
;

JB FLAG_0, MOD0_LEADING
JB FLAG_1, MOD1_LEADING
;

MOD0_LEADING:

	MOV A, CAPTURE_1		
	SUBB A, CAPTURE_0		
	MOV PHASE, A				
	MOV A, CAPTURE _1+1		
	SUBB A, CAPTURE_0+1
	MOV PHASE+1, A
	CLR FLAG_0
	JMP EXIT
;
MOD1_LEADING:

	MOV A, CAPTURE_0	
	SUBB A, CAPTURE_1
	MOV PHASE, A
	MOV A, CAPTURE_0+1
	SUBB A, CAPTURE_1+1
	MOV PHASE+1, A
	CLR FLAG_1
EXIT:

	POP PSW				
	POP ACC
	RETI



List of 13 messages in thread
TopicAuthorDate
project            01/01/70 00:00      
   OK, first \'lesson\'            01/01/70 00:00      
   good practice            01/01/70 00:00      
      correct, but let me add            01/01/70 00:00      
   Code formatted            01/01/70 00:00      
      but still not commented            01/01/70 00:00      
      But you didn't tell him how!            01/01/70 00:00      
   Question?            01/01/70 00:00      
   I guess you are using a C8051F020            01/01/70 00:00      
      Or is it the C8051F120?            01/01/70 00:00      
         link            01/01/70 00:00      
            look here            01/01/70 00:00      
            Does not fit            01/01/70 00:00      

Back to Subject List