Elsőként a korábban bemutatott R betűt fogjuk kiírni programból. A programot assembly nyelven írtam, így minden egyes lépést végigkövethetünk.
 A program fő működtetőeleme 2 db szubrutin. Az egyik az LCD-nek adott parancsokat, a másik az LCD-nek küldött adatokat vezérli, de nézzük a teljes kódot:
 
- </div> 
- <div> 
- <p style="margin-left: 30px;">LIST p=16F628A  
-  include "P16F628A.inc"  
-  ERRORLEVEL 0, -302  
-  __config 0x3D18 
-   
- <p style="margin-left: 30px;"> 
-  cblock 0x20  
-   
-  count  
-  count1  
-  counta 
-  countb 
-  count2 
-  lcdadat 
-   
-  endc 
-   
- Initialise 
-        org 0x0000 
- <p style="margin-left: 30px;">movlw 0x07 
-  movwf CMCON ; komparátor ki 
-  clrf count 
- SetPorts 
- <p style="margin-left: 30px;">bsf STATUS,RP0 ; bank 1 
-  clrf TRISA 
-  clrf TRISB 
-  bcf STATUS,RP0 ; bank 0 
-  clrf PORTA 
-  clrf PORTB 
-  call Delay255 
-  bsf PORTA,7 ; lcd reset 
-  call Delay255 
- LCD_init 
- <p style="margin-left: 30px;">bcf PORTA,1 ;mindkét chip kiválasztása 
- bcf PORTA,0  
- <p style="margin-left: 30px;">movlw 0x3F ; lcd on 
-  movwf lcdadat 
-  call LCD_com 
-  call Delay255 
-   
- movlw b'01000000' ; Y kezdőcím: 0 
-  movwf lcdadat 
-  call LCD_com 
-   
-  movlw b'10111000' ; X kezdőcím: 0 
-  movwf lcdadat 
-  call LCD_com 
-   
-  movlw b'11000000' ; Z kezdőcím: 0 
-  movwf lcdadat 
-  call LCD_com 
-   
-  call Delay255 
- LCD_adat 
- <p style="margin-left: 30px;"> 
-  bsf PORTA,1 ; 1-es, chip kiválasztása 
-  bcf PORTA,0  
-   
-  movlw b'00000000' ; R betű 
-  movwf lcdadat 
-  call LCD_write 
-   
-  movlw b'01111111' 
-  movwf lcdadat 
-  call LCD_write 
-   
-  movlw b'00001001'  
-  movwf lcdadat 
-  call LCD_write 
-   
-  movlw b'00011001' 
-  movwf lcdadat 
-  call LCD_write 
-   
-  movlw b'00101001'  
-  movwf lcdadat 
-  call LCD_write 
-   
-  movlw b'01000110' 
-  movwf lcdadat 
-  call LCD_write 
-   
-  movlw b'00000000' 
-  movwf lcdadat 
-  call LCD_write 
-   
-  goto $ 
-   
-   
- ;Subroutines and text tables 
- ;LCD routines 
- ;Initialise LCD 
- LCD_com ;a parancsok rutinja 
- <p style="margin-left: 30px;">bcf PORTA,2 
-  movfw lcdadat 
-  movwf PORTB 
-  bsf PORTA,3 
-  call Delay5 
-  bcf PORTA,3 
-  call Delay5 
-  retlw 0x00 
- LCD_write ;az adatok rutinja 
- <p style="margin-left: 30px;">bsf PORTA,2 
-  movfw lcdadat 
-  movwf PORTB 
-  bsf PORTA,3 
-  call Delay5 
-  bcf PORTA,3 
-  call Delay5 
-  retlw 0x00 
- Delay255  
-  movlw 0xff ;delay 255 mS 
-  goto k0 
- Delay100  
-  movlw d'100' ;delay 100mS 
-  goto k0 
- Delay50  
-  movlw d'50' ;delay 50mS 
-  goto k0 
- Delay20  
-  movlw d'20' ;delay 20mS 
-  goto k0 
- Delay5  
-  movlw 0x05 ;delay 5.000 ms (4 MHz clock) 
- k0 movwf count1 
- k1 movlw 0xC7 ;delay 1mS 
-  movwf counta 
-  movlw 0x01 
-  movwf countb 
- Delay_0 
-  decfsz counta, f 
-  goto $+2 
-  decfsz countb, f 
-  goto Delay_0 
- decfsz count1 ,f 
-  goto k1 
-  retlw 0x00 
-   
- ;end of LCD routines 
-   
-  end 
- </div> 
- <div> 
 
 
Mint látható a két rutin csak a PORTA,2 állapotában tér el, parancs vagy adat küldés.
A lefordított programot (hex) 
innen letölthetitek.
 
	    
		Értékeléshez bejelentkezés szükséges!