Extraits de la documentation technique Microchip du PIC 16F Savoir concevoir et écrire un programme assembleur. cours sur les interruptions IF3. PiKdev, An IDE for the development of PIC based . http:// Cours de programmation. Lors de l’écriture d’un programme en assembleur 68HC11, une directive d’ assemblage Figure 6: Logiciel PCBUG11 en cours d’utilisation.
|Published (Last):||6 June 2009|
|PDF File Size:||20.26 Mb|
|ePub File Size:||20.13 Mb|
|Price:||Free* [*Free Regsitration Required]|
In this manner, if the save of W “punches through” to another bank, it will not corrupt other data. You cannot tell which variables are in use by the library routines at any given time.
Generally, floating point operations occur between 2 numbers, so a second integer bint should also be converted. You should create variables in the PicBasic Pro program for the express purpose of saving W, the STATUS register and any other register aassembleur may need to be altered by the interrupt handler.
In this case we will choose the first location in each bank.
While it seems a simple matter to save W in any RAM register, it is actually somewhat more complicated. The PicBasic Pro programs must be compiled using the -ampasm switch to invoke Microchip’s assembler. Using Microchip’s Floating Point Routines with PicBasic Pro Microchip has developed several different floating point routines in assembler and placed them on their web site.
SQR returns the square root of a value. The problem occurs in that you have no way of knowing what register bank you are pointing to when the interrupt happens. Finally, the floating point number is converted back into an integer aint so that PicBasic Pro can use it again. These routines can be integrated into a PicBasic Pro program and called, if floating point is a necessity. This short subroutine checks the state of the Global Interrupt Enable bit. A short interrupt handler is placed at location 4 in the PICmicro.
As an example, lets say that the PicBasic Pro program just started execution of a Pause when an interrupt occurs. If it takes too long to execute, the Watchdog Timer could timeout and really make a mess of things. It does not immediately vector to your interrupt handler. SIN returns the 8-bit sine of a value. Lisez bien les explications en anglais plus bas. It immediately jumps to the loop with no interrupt check.
BAS que vous trouver dans C: Your interrupt handler must save and restore any used registers. This interrupt handler is simply a Return. A special construct has been added to the VAR command to allow this: Un informaticien ne peut compter le nombre d’heures passer devant le clavier.
If the program uses the form: This is called saving and restoring the processor context. Un programmeur averti en vaut deux.
Episode 1 : Programme d’une seule LED avec simulation sur ISIS – PIC 16F877
Since PBP statements are not re-entrant PBP must finish the statement that is being executed before it can begin a new one there could be considerable delay latency before the interrupt is handled. If you have reserved a location in Bank0 and the current register pointers are set to Bank1, for example, you could overwrite an unintended location.
This disables all the individual interrupts but leaves the Global Interrupt Enable bit set. Turning off this bit tells PBP an interrupt has happened and it will execute the interrupt handler forever.
While it is not that difficult, it is not obvious asseembleur to make this work properly.
Keep in mind the interrupt flag is checked after each instruction. Label is the beginning of your interrupt routine. The interrupt routine should be as short and fast as you can possibly make it. Since PicBasic Pro only works with integers, the result will always be an 8-bit integer no larger than the actual result. All previous return addresses will be lost in this case. Below is one example program that demonstrates the use of the libraries. This will allow PBP to complete each statement more quickly and handle any pending interrupts.
If you need to alter any of these, and you probably will, you must save the current values so that you can restore them before allowing the processor to go back to what it was doing before it was so rudely interrupted.
Which brings us the first issue. Sine starts with a value in binary radians, 0 toas opposed to the usual 0 to degrees. Some other statement must be placed in the loop for the interrupt check to happen. As an example, let’s choose the 16C74 A.
The best place to put the assembly language interrupt handler is probably at the very beginning of your PicBasic Pro program.
Also, several example programs are included. Finally, you need to tell PBP that you are using an assembly language interrupt handler and where to find it.
Programmation Assembleur — Wikilivres
If you don’t have their assembler, it also may be downloaded from their web site. If it is buffering characters from a serial port, many characters will be missed. The first routine should convert the integer value aint to a floating point value. This instructs the compiler to place the variable at a particular location in RAM.
This allows sections of code to execute without the possibility of being interrupted. See the example below for a demonstration of this. You must restore these registers at the end of your assembler interrupt handler.