Member Avatar for zios007
zios007

I need to put the number of cycles for each assembly instruction in the comment field and then calculate the total number of cycles for the entire 10 second timing interval.

Need to calculate the processor clock frequency (MCLK) by dividing the total number of cycles per interval by the time between "blinks" of the LED. (The clock speed should be accurate to at least 4 significant digits and is measured in cycles per second.)

Calculate the average cycles per instruction (CPI) by dividing the total number of cycles per interval by the number of instructions per interval. CPI will vary according to the instructions used in your timing loops. (CPI is measured in cycles per instruction.)

Finally, I need to calculate the raw speed of the processor (MIPS) by dividing the processor clock frequency (MCLK) by the average.

This is the code I made... some help please?
Here is in a google doc for easier view: https://docs.google.com/document/d/1F7Zm-OoA0J7ahG22zQOP4M5kIP-29dNjvJgf6Ho1o98/edit

.cdecls C,LIST, "msp430x20x3.h"  ; MSP430F2013
;          .cdecls C,LIST, "msp430x22x4.h"  ; MSP430F2274

DELAY		.equ	0		;
DELAY1      	.equ    55                      ; turn led on for 10 seconds
DELAY2      	.equ    0
;------------------------------------------------------------------------------
            .text                           ; beginning of executable code
;------------------------------------------------------------------------------
RESET:     	 mov.w   	#0x0280,SP              			; init stack pointer
            	mov.w   	#WDTPW+WDTHOLD,&WDTCTL  ; stop WDT
            	bis.b   		#0x01,&P1DIR            		; set P1.0 as output

mainloop:   
            	bis.b   		#0x01,&P1OUT           	; turn LED on
delayloop2: 	mov.w		#DELAY,r13			; loop delay counter
delayloop3:	dec.w   	13                    		; delay over?
              	jne   		delayloop3			; jumps to delayloop3
            	bic.b   		#0x01,&P1OUT            	; turn LED off


            	mov.w   	#DELAY1,r14            		 ; outer loop delay counter

delayloop:  	mov.w  	#DELAY2,r15            	 	; inner loop delay counter

delayloop1: 	dec.w   	r15                     		; delay over?
              	ne   		delayloop1              		; n
            	dec.w   	r14                    		 ; delay again
             	jne   		delayloop
		jmp     		mainloop               		; repeat stoplight

;------------------------------------------------------------------------------
;           Interrupt Vectors
;------------------------------------------------------------------------------
            .sect   ".reset"                ; MSP430 RESET Vector
            .short  RESET                   ; start address
            .end