MC68HC11 and the HCSim11 simulator

  • Thread starter Thread starter addle_brains
  • Start date Start date
  • Tags Tags
    Simulator
AI Thread Summary
The discussion revolves around programming an assembly code for the MC68HC11 microcontroller using the HCSim11 simulator, specifically focusing on handling IRQ requests. The user initially had a functioning program but encountered an error after making changes to comply with assignment guidelines. The error indicates that the program counter (PC) is pointing to an invalid memory address, suggesting an issue with the interrupt vector setup. The user has defined IRQ and RESET vectors at memory addresses $FFF2 and $FFFE, respectively, but is unsure about the contents of these addresses and their implications. It's emphasized that the microcontroller will jump to the address stored in $FFF2 when an interrupt occurs, making it crucial to know what is stored there to avoid errors. Understanding the memory map and ensuring correct vector assignments are essential for resolving the issue.
addle_brains
Messages
8
Reaction score
0
Hey everyone, new here.

I am currently doing an assignment to write a program in assembly for the MC68HC11 microcontroller using the HCSim11 simulator. The program must make use of the IRQ request line. On Strobe A rising edge, a count from 0 to a set maximum (the maximum is set by switches PC0 - PC4) will begin and display the numbers on the LCD screen.

Now, I know pretty much how to do this. I had the program working and all, but I made some changes according to the assignment guidelines and now I get an error. The program waits for an interrupt, and when I switch strobe A on, i get a warning:

"The PC is placed on an address outside the list window. The disassembler window is made active so you can still trace the program counter."

I have retraced steps, followed examples and I cannot figure out how to fix this, let alone what it means. Any help would be great, seeing as people in my course, including instructors, are not offering any. Googleing has been fruitless.
 
Computer science news on Phys.org
It means the program counter (PC) has been changed to a location that's outside the boundaries of your memory. In other words, you jumped to a memory location that doesn't exist.

Chances are, you set up some kind of an interrupt vector, and that vector is incorrect.

- Warren
 
I have set up an IRQ and RESET vectors, $FFF2 and $FFFE respectively,as per the assignment details. Yet, when the interrupt is set, I still get the error. Can I submit my code and someone could maybe tell me what's wrong?
 
$FFF2 and $FFFE are memory addresses? If so, what are the contents of those memory addresses? Jumps to other addresses?

- Warren
 
The assignment specifications request that we assign interrupt and RESET vector addresses (among others including LCDDATA and Port controls) thusly:


IRQ EQU $FFF2 IRQ vector
RESET EQU $FFFF RESET vector
 
Last edited:
Again...

What is contained in those memory addresses, $FFF2 and $FFFE?

- Warren
 
In my code? I can't really remember, I'm not at home, but just stuff like LDAA commands or CLRA. The memory map says that those addresses are for ROM so it shouldn't matter, should it?
 
Well, when your interrupt request is activated, the microcontroller jumps to whatever address is stored in $FFF2-3. You should probably know what's in those memory locations, so you know where the jump is going.

- Warren
 
Back
Top