Uso de temporizadores Microcontrolador de ensamblaje 8051

Estoy probando un ejemplo de temporizador básico en keil (8051) cuando depuro este código

org 0
MOV TH0,#76
MOV TL0,#01
MOV TMOD,#01
SETB TR0
JNB TF0,$
end

me sale el error

    error 65 access violation at c: 0x000e no execute read permission

por favor necesito ayuda para solucionar este problema

Respuestas (2)

Tienes un error clásico aquí. No ha hecho ninguna provisión sobre lo que su programa debería ejecutar después de llegar a la dirección 0x000E.

Aquí echa un vistazo:

C:0x0000    758C4C   MOV      TH0(0x8C),#0x4C
C:0x0003    758A01   MOV      TL0(0x8A),#0x01
C:0x0006    758901   MOV      TMOD(0x89),#0x01
C:0x0009    D28C     SETB     TR0(0x88.4)
C:0x000B    308DFD   JNB      TF0(0x88.5),C:000B
C:0x000E    ????     ???      ??? ???

El hecho de que coloque una declaración de "fin" en su código fuente de lenguaje ensamblador no significa nada para el núcleo de tiempo de ejecución 8051 que intenta obtener instrucciones.

Depurar->Mapa de memoria, asegúrese de que el mapa de memoria esté correctamente habilitado para lectura/escritura (por ejemplo, 0x0000 a 0xFFFF)

Consulte la respuesta de Michael sobre por qué el mapa de depuración no cubre su memoria no inicializada. Una sesión de depuración precisa seguiría a la CPU mientras ejecuta alegremente lo que sea (posiblemente bytes aleatorios o 0xFF) que esté en la memoria del programa después de su fragmento de programa. 0xFF es MOV R7,A.