Tips & Tricks - PIC

 

 


6.- Fare lavorare MPASM.

Solitamente occorre effettuare calcoli relativi al clock o simili (baudrate, I2C clock, timing, ecc).
Qui posiamo inserire alcuni di questi calcoli e gli elementi necessari alla loro esecuzione, in modo che MPASM lavori per noi.

;====================================================================
;===========
General purpose definitions ============================
;======================
==============================================
; base frequency
XTAL_FREQ equ d'1000000'       ; OSC freq [ Hz]
CLOCK     equ XTAL_FREQ/4      ; processor clock [Hz]
TCYC      equ 1000000000/CLOCK ; cycle time [ns]

; esempi di "calcolo atto fare" all' Assembler

; calculates baudrate when BRGH = 1, adjust for rounding errors
#define CALC_HIGH_BAUD(BaudRate) (((10*XTAL_FREQ/(16*BaudRate))+5)/10)-1
; calculates baudrate when BRGH = 0, adjust for rounding errors
#define CALC_LOW_BAUD(BaudRate) (((10*XTAL_FREQ/(64*BaudRate))+5)/10)-1

Si potranno poi definire costanti locali o altro specifico per l' applicazione.
Ad esempio:

;============= LCD driver's definitions and constants ===========
; The following definitions bypass the default values
 
CONSTANT LCDBLIND = 0x00 ; use RW
;CONSTANT LCDBLIND = 0x01  ; don't use RW
;
LCDLINENUM = 0x02          ; 2 or more lines
LCDCHRXLINE = d'16'        ; 16 char per line
;
LCDTYPE = 0x00             ; 440780 compatible
;LCDTYPE = 0x01            ; KS0073
;
;LCDVOLT = d'3'            ; power supply <5V
LCDVOLT = d'5'             ; power supply 5V

La tecnica di scrivere linee alternative e porle come commenti con il ; iniziale è molto comoda perchè permette di effettuare modifiche semplicemente scambiano il ; su un' altra linea di scelta, senza bisogno di consultare documentazioni.


 

Copyright © afg . Tutti i diritti riservati.
Aggiornato il 16/05/12 .