SoloCodigo
		Programación Específica => Microcontroladores => Mensaje iniciado por: Arlekin en Sábado 27 de Noviembre de 2010, 00:26
		
			
			- 
				Hola, soy nuevo y vengo con un problema. Soy estudiante y estoy llevando la asignatura de Microcontroladores, pero para mi mala suerte, me ha tocado llevarla con un profesor que exige mucho y enseña poco. Necesito hacer, como dice el tema, un programa en código ensamblador que me ejecute una cuenta desde el cero hasta el 9999, con un lapso total de un segundo entre cada número, todo esto en el software de Codewarrior y el microcontrolador M9S08QG8. Aunque mi amigo y yo tratamos de hacerlo, nos marcaba varios errores y no obtenemos apoyo alguno por parte del profesor. Es muy urgente, muchas gracias de antemano  :(
			
- 
				Buenas noches, espero todavia estemos a tiempo, tienes a mano el codigo fuente del contador, subilo que le hecho una mirada y veo en que te puedo ayudar. Saludos :)
			
- 
				Disculpa mi ignorancia, no se qué es el código fuente :( sin embargo, revisando algunos modos de direccionamiento, probe a crear el código mencionado con ese modo, he aquí mi resultado:
 
 ;*******************************************************************
 ;* This stationery serves as the framework for a user application. *
 ;* For a more comprehensive program that demonstrates the more     *
 ;* advanced functionality of this processor, please see the        *
 ;* demonstration applications, located in the examples             *
 ;* subdirectory of the "Freescale CodeWarrior for HC08" program    *
 ;* directory.                                                      *
 ;*******************************************************************
 
 ; Include derivative-specific definitions
 INCLUDE 'derivative.inc'
 ;
 ; export symbols
 ;
 XDEF _Startup
 ABSENTRY _Startup
 
 ;
 ; variable/data section
 ;
 ORG    RAMStart         ; Insert your data definition here
 CNT         RMB    2
 
 ;
 ; code section
 ;
 ORG    ROMStart
 ; Include device initialization code
 INCLUDE 'MCUInit.inc'
 
 _Startup:
 LDHX   #RAMEnd+1        ; initialize the stack pointer
 TXS
 ; Call generated Device Initialization function
 JSR    MCU_init
 
 mainLoop:
 ; Insert your code here
 LDA    SOPT1
 AND    #%01111111
 STA    SOPT1
 LDA    #%11111111
 STA    PTBDD
 CLRA
 STA    CNT
 LDA    #%01010111
 STA    SRTISC
 CLI
 
 BRA    mainLoop
 
 SIRTI       SEI
 LDHX   CNT
 CPHX   #9999
 BEQ    ET01
 LDA    #0,X
 STA    PTBD
 INCX
 STHX   CNT
 BRA    ET02
 
 ET01        LDA    #0,X
 STA    PTBD
 CLRX
 CLRH
 STHX    CNT
 
 ET02        LDA    #%01010111
 STA    SRTISC
 CLI
 RTI
 ORG    Vrti
 FDB    SIrti
 
 Ignorando casi toda la inicialización y solamente revisando a partir del mainloop, mi duda es si realmente funcionaria como deseo; que cuente de 0 a 9999?