;LCD_TTY.inc à inclure dans un Pic en cours de debug(DUT) ;21/01/2008 Ph Loutrel ;Ce logiciel gère la ligne TX de l'USART.Il émet sur cette ligne un car vers un ecran LCD/16F88 ;géré par 88PicTTY.Le car s'affiche en decimal ;Il est le même pour un Pic 16F88 ou 16F877 ;Au minimum, il faut une masse commune et un fil entre la patte TX du DUT et le PicTTY ;Le +5V peut être fourni par le DUT ou séparémént. ; On a interet à commencer par emettre 8 fois '0', voir code ci-après ;PRIMITIVES: INIT_USART, XEMET, XWAIT_1s ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ;ATENTION!!!!! declarer XTMP en RAM ds le programme principal ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INIT_USART ;SUB d'initialisation de l'USART en émission banksel TRISB ;bk1 bcf PORTB,5 ;out TX, pin 11 movlw d'25' ;set baud generator 9600bps movwf SPBRG clrf TXSTA clrf RCSTA bsf TXSTA,BRGH ;b2 de TXSTA pour Hi speed bcf TXSTA,SYNC ;b3 de TXSTA pour Asynchrone bsf TXSTA,TXEN ;b4 de TXSTA,enable transmission, also sets bit TXIF de PIR1 banksel PIR1 ;bk0 clrf PORTB bsf RCSTA,SPEN ;b7 de RCSTA,Set Serial Port RD et TX return ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; XEMET ;SUB de TX movwf XTMP call XWAIT_5ms ;attente indispensable movfw XTMP btfss PIR1,TXIF ;attendre tant que flag=0 goto $-1 movwf TXREG ;il lui sera ajouté 1 bit de Start et 1 de Stop call XWAIT_5ms ;attente indispensable return ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; XWAIT_5ms ;SUB d'attente 250*20µs=5ms movlw d'250' xsd addlw -1 ; 20µs goto $+1 goto $+1 goto $+1 goto $+1 goto $+1 goto $+1 goto $+1 goto $+1 nop btfss STATUS,Z ; goto xsd ; return ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OPTIONNEL;;;;;;;;;;;;;;;;;;;;;;;;; ;XWAIT_1s ;Sub attente 1s soit 250*5ms ; movlw d'192' ; movwf XTMP ;xxw ; decfsz XTMP,f ; goto $+2 ; return ; call XWAIT_5ms ; goto xxw ;;;;;;;;;;;;;;;;;;;;;;;; ; movlw d'8' ;cette sequence pour afficher 8 fois zero ; movwf XTMP ;sur le LCD de debug ; movlw 0 ; call XEMET ; decfsz XTMP,f ; goto $-3 ;EX d'utilisation ;********************************************************************** ; list p=16F88 ; list directive to define processor ; #include ; processor specific variable definitions ;Program Configuration Register 1 PIEGE sur 16F88: il FAUT _HS_OSC meme à 4MHzou comme ici INTRC_IO osc interne ; __CONFIG _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _INTRC_IO ;Program Configuration Register 2 ; __CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF ;Mclr_on= habituel( =off connection interne du reset à Vdd, Mclr devient RA5). CCP_RB0, RB0 est l'entrée du module COMPARE. SURTOUT oscllateur HS,bug avec XT! ; ERRORLEVEL -302 ; cblock h'20' ; XTMP ;INDISPENSABLE pour XWAIT_1s ; TMP ; endc ; org 0 ;MAIN ; call INIT_USART ;ex d'utilisation: on emet un acr qd le BP est poussé ; clrf TMP ;deb ; incf TMP,f ; movfw TMP ; call XEMET ; call XWAIT_5ms ; call XWAIT_5ms ; call XWAIT_5ms ; call XWAIT_5ms ; call XWAIT_1s ; nop ; btfsc PORTB,0 ; 0 si bp poussé ; goto $-1 ; goto deb ;#include