#include <16f628a.h>
#use delay (clock=4000000)
#byte portb=0x06
#byte porta=0x05
#bit ra0=0x05.0
#bit ra1=0x05.1
#bit ra2=0x05.2
void main()
{
set_tris_a(255);
set_tris_b(0);
portb=0;
while(1)
{
if(ra0==0)
{
portb++;
delay_ms(300);
if(portb==9)
portb=0;
}
if(ra1==0)
{
if (portb==0){
portb=0b00001001;
delay_ms(300);}
else
portb--;
delay_ms(300);
}
if(ra2==0)
{
portb=0;
delay_ms(300);
}
}
}
Ahora en Assembler:
ROM used: 85 words (4%)
Largest free fragment is 1963
RAM used: 7 (3%) at main() level
8 (4%) worst case
Stack: 1 locations
*
0000: MOVLW 00
0001: MOVWF 0A
0002: GOTO 019
0003: NOP
.................... #include <16f628a.h>
.................... //////// Standard Header file for the PIC16F628A device ////////////////
.................... #device PIC16F628A
.................... #list
....................
.................... #use delay (clock=4000000)
0004: MOVLW 22
0005: MOVWF 04
0006: BCF 03.7
0007: MOVF 00,W
0008: BTFSC 03.2
0009: GOTO 018
000A: MOVLW 01
000B: MOVWF 78
000C: CLRF 77
000D: DECFSZ 77,F
000E: GOTO 00D
000F: DECFSZ 78,F
0010: GOTO 00C
0011: MOVLW 4A
0012: MOVWF 77
0013: DECFSZ 77,F
0014: GOTO 013
0015: GOTO 016
0016: DECFSZ 00,F
0017: GOTO 00A
0018: RETLW 00
.................... #byte portb=0x06
.................... #byte porta=0x05
....................
.................... #bit ra0=0x05.0
.................... #bit ra1=0x05.1
.................... #bit ra2=0x05.2
....................
.................... void main()
.................... {
0019: CLRF 04
001A: BCF 03.7
001B: MOVLW 1F
001C: ANDWF 03,F
001D: MOVLW 07
001E: MOVWF 1F
.................... set_tris_a(255);
001F: MOVLW FF
0020: TRIS 5
.................... set_tris_b(0);
0021: MOVLW 00
0022: TRIS 6
....................
.................... portb=0;
0023: CLRF 06
.................... while(1)
.................... {
.................... if(ra0==0)
0024: BTFSC 05.0
0025: GOTO 032
.................... {
.................... portb++;
0026: INCF 06,F
.................... delay_ms(300);
0027: MOVLW 02
0028: MOVWF 21
0029: MOVLW 96
002A: MOVWF 22
002B: CALL 004
002C: DECFSZ 21,F
002D: GOTO 029
.................... if(portb==9)
002E: MOVF 06,W
002F: SUBLW 09
0030: BTFSC 03.2
.................... portb=0;
0031: CLRF 06
.................... }
.................... if(ra1==0)
0032: BTFSC 05.1
0033: GOTO 049
.................... {
.................... if (portb==0){
0034: MOVF 06,F
0035: BTFSS 03.2
0036: GOTO 041
.................... portb=0b00001001;
0037: MOVLW 09
0038: MOVWF 06
.................... delay_ms(300);}
0039: MOVLW 02
003A: MOVWF 21
003B: MOVLW 96
003C: MOVWF 22
003D: CALL 004
003E: DECFSZ 21,F
003F: GOTO 03B
.................... else
0040: GOTO 042
.................... portb--;
0041: DECF 06,F
.................... delay_ms(300);
0042: MOVLW 02
0043: MOVWF 21
0044: MOVLW 96
0045: MOVWF 22
0046: CALL 004
0047: DECFSZ 21,F
0048: GOTO 044
....................
.................... }
.................... if(ra2==0)
0049: BTFSC 05.2
004A: GOTO 053
.................... {
.................... portb=0;
004B: CLRF 06
.................... delay_ms(300);
004C: MOVLW 02
004D: MOVWF 21
004E: MOVLW 96
004F: MOVWF 22
0050: CALL 004
0051: DECFSZ 21,F
0052: GOTO 04E
.................... }
.................... }
0053: GOTO 024
.................... }
0054: SLEEP
Configuration Fuses:
Word 1: 3F73 NOWDT PUT NOPROTECT BROWNOUT MCLR NOLVP RC NOCPD