PIC 16F88 3x3 maticova klavesnica & 8 RGB LED

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
INKOGNITTO
Příspěvky: 1
Registrován: 25 pro 2009, 00:00

PIC 16F88 3x3 maticova klavesnica & 8 RGB LED

#1 Příspěvek od INKOGNITTO »

Zdravim, rad by som sa pochvalil s mojim najovsim vytvorom. Dufam, ze s nazvu, schemy a programu bude vsetko jasne, tak tu nebudem davat nejaky popis :) Este to fyzicky postavene nemam, ale dalsi tyzden pride programator, takze vtedy to uz bude. Nejake navrhy na zlepsenie, alebo zefektivnenie programu rad prijmem :)

Kód: Vybrat vše

LIST P=16F88
#include <p16f88.inc>

A1      EQU   21h
A2      EQU   22h

R1ON   EQU   23h
G1ON   EQU   24h
B1ON   EQU   25h

R2ON   EQU 26h
G2ON   EQU 27h
B2ON   EQU 28h

R3ON   EQU 29h
G3ON   EQU 2Ah
B3ON   EQU 2Bh

R4ON   EQU 2Ch
G4ON   EQU 2Dh
B4ON   EQU 2Eh

R5ON   EQU 2Fh
G5ON   EQU 30h
B5ON   EQU 31h

R6ON   EQU 32h
G6ON   EQU 33h
B6ON   EQU 34h

R7ON   EQU 35h
G7ON   EQU 36h
B7ON   EQU 37h

R8ON   EQU 38h
G8ON   EQU 39h
B8ON   EQU 3Ah

LEDSET   EQU   3Bh

#DEFINE   IN1      PORTA,0
#DEFINE   IN2      PORTA,5
#DEFINE   IN3      PORTA,7

#DEFINE   OUT1   PORTA,6
#DEFINE   OUT2   PORTB,6
#DEFINE   OUT3   PORTB,7

;OUT   1      2      3
;IN   
;1      R-UP   G-UP   B-UP
;2      R-DN   G-DN   B-DN
;3      PREW   NEXT   RESET


_INTOSC_OSC_NOCLKOUT         EQU     H'3FFC'

ORG   0x2007      ; adresa konfiguracie PIC16F88
   dw   _BODEN_OFF & _CPD_OFF & _CP_OFF & _PWRTE_OFF   & _WDT_OFF & _LVP_OFF & _INTOSC_OSC_NOCLKOUT & _DEBUG_OFF & _MCLR_OFF & _WRT_PROTECT_OFF & _INTRC_IO
   

ORG   0
GOTO   START

ORG   4
GOTO   START

START
   BCF      STATUS,RP0
   CLRF   STATUS
   BANKSEL   OSCCON
   BSF      OSCCON,IRCF2
   BSF      OSCCON,IRCF1
   BSF      OSCCON,IRCF0
   BSF      STATUS,RP0
   MOVLW    0x00 ; Configure all pins
   MOVWF    ANSEL ; as digital inputs
   MOVLW   B'00000000'
   MOVWF   OPTION_REG   
   MOVLW   B'00000000'
   MOVWF   TRISB
   MOVLW   B'10100001'
   MOVWF   TRISA
   BCF      STATUS,RP0
   CLRF   PORTB
   CLRF   PORTA

   MOVLW   .1
   MOVWF   R1ON
   MOVWF   B1ON
   MOVWF   G1ON

   MOVWF   R2ON
   MOVWF   B2ON
   MOVWF   G2ON

   MOVWF   R3ON
   MOVWF   B3ON
   MOVWF   G3ON

   MOVWF   R4ON
   MOVWF   B4ON
   MOVWF   G4ON

   MOVWF   R5ON
   MOVWF   B5ON
   MOVWF   G5ON

   MOVWF   R6ON
   MOVWF   B6ON
   MOVWF   G6ON

   MOVWF   R7ON
   MOVWF   B7ON
   MOVWF   G7ON

   MOVWF   R8ON
   MOVWF   B8ON
   MOVWF   G8ON

   MOVWF   LEDSET

   GOTO   PROGRAM


PROGRAM
   ;klavesnica
   BCF      OUT2   
   BCF      OUT3
   BSF      OUT1
   
   BTFSC   IN1
   GOTO   RUP
   BTFSC   IN2
   GOTO   RDN
   BTFSC   IN3
   GOTO   PREW
   
   BCF      OUT1
   BSF      OUT2

   BTFSC   IN1
   GOTO   GUP
   BTFSC   IN2
   GOTO   GDN
   BTFSC   IN3
   GOTO   NEXT

   BCF      OUT2
   BSF      OUT3
   
   BTFSC   IN1
   GOTO   BUP
   BTFSC   IN2
   GOTO   BDN
   BTFSC   IN3
   GOTO   RESETT
   GOTO   JADRO
   
JADRO
   CLRF   PORTB
   BSF      PORTA,2
   BSF      PORTA,3
   BSF      PORTA,4
   BSF      PORTA,1

   CALL   LEDKY
   GOTO   PROGRAM


LEDKY
;LED1
   ;RED1
   BCF      PORTA,2
   BSF      PORTB,0
   MOVFW   R1ON
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   BCF      PORTB,0
   MOVLW   .255
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ   
   ;GREEN1
   BCF      PORTB,0
   BSF      PORTB,1
   MOVFW   G1ON
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   BCF      PORTB,1
   MOVLW   .255
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   ;BLUE1
   BCF      PORTB,1
   BSF      PORTB,2
   MOVFW   B1ON
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   BCF      PORTB,2
   MOVLW   .255
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   
;LED2
   ;RED
   BSF      PORTA,2
   BCF      PORTA,3
   BCF      PORTB,2
   BSF      PORTB,0
   MOVFW   R2ON
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   BCF      PORTB,0
   MOVLW   .255
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ   
   ;GREEN
   BCF      PORTB,0
   BSF      PORTB,1
   MOVFW   G2ON
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   BCF      PORTB,1
   MOVLW   .255
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   ;BLUE
   BCF      PORTB,1
   BSF      PORTB,2
   MOVFW   B2ON
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   BCF      PORTB,2
   MOVLW   .255
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   
;LED3
   ;RED
   BSF      PORTA,3
   BCF      PORTA,4
   BCF      PORTB,2
   BSF      PORTB,0
   MOVFW   R3ON
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   BCF      PORTB,0
   MOVLW   .255
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ   
   ;GREEN
   BCF      PORTB,0
   BSF      PORTB,1
   MOVFW   G3ON
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   BCF      PORTB,1
   MOVLW   .255
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   ;BLUE
   BCF      PORTB,1
   BSF      PORTB,2
   MOVFW   B3ON
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   BCF      PORTB,2
   MOVLW   .255
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ

;LED4
   ;RED
   BSF      PORTA,4
   BCF      PORTA,1
   BCF      PORTB,2
   BSF      PORTB,0
   MOVFW   R4ON
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   BCF      PORTB,0
   MOVLW   .255
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ   
   ;GREEN
   BCF      PORTB,0
   BSF      PORTB,1
   MOVFW   G4ON
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   BCF      PORTB,1
   MOVLW   .255
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   ;BLUE
   BCF      PORTB,1
   BSF      PORTB,2
   MOVFW   B4ON
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   BCF      PORTB,2
   MOVLW   .255
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ

;LED5
   ;RED1
   BSF      PORTA,1
   BCF      PORTA,2
   BSF      PORTB,3
   MOVFW   R5ON
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   BCF      PORTB,3
   MOVLW   .255
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ   
   ;GREEN1
   BCF      PORTB,3
   BSF      PORTB,4
   MOVFW   G5ON
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   BCF      PORTB,4
   MOVLW   .255
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   ;BLUE1
   BCF      PORTB,4
   BSF      PORTB,5
   MOVFW   B5ON
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   BCF      PORTB,5
   MOVLW   .255
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   
;LED6
   ;RED
   BSF      PORTA,2
   BCF      PORTA,3
   BCF      PORTB,5
   BSF      PORTB,3
   MOVFW   R6ON
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   BCF      PORTB,3
   MOVLW   .255
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ   
   ;GREEN
   BCF      PORTB,3
   BSF      PORTB,4
   MOVFW   G6ON
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   BCF      PORTB,4
   MOVLW   .255
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   ;BLUE
   BCF      PORTB,4
   BSF      PORTB,5
   MOVFW   B6ON
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   BCF      PORTB,5
   MOVLW   .255
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   
;LED7
   ;RED
   BSF      PORTA,3
   BCF      PORTA,4
   BCF      PORTB,5
   BSF      PORTB,3
   MOVFW   R7ON
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   BCF      PORTB,3
   MOVLW   .255
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ   
   ;GREEN
   BCF      PORTB,3
   BSF      PORTB,4
   MOVFW   G7ON
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   BCF      PORTB,4
   MOVLW   .255
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   ;BLUE
   BCF      PORTB,4
   BSF      PORTB,5
   MOVFW   B7ON
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   BCF      PORTB,5
   MOVLW   .255
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ

;LED8
   ;RED
   BSF      PORTA,4
   BCF      PORTA,1
   BCF      PORTB,2
   BSF      PORTB,0
   MOVFW   R4ON
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   BCF      PORTB,0
   MOVLW   .255
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ   
   ;GREEN
   BCF      PORTB,0
   BSF      PORTB,1
   MOVFW   G4ON
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   BCF      PORTB,1
   MOVLW   .255
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   ;BLUE
   BCF      PORTB,1
   BSF      PORTB,2
   MOVFW   B4ON
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ
   BCF      PORTB,2
   MOVLW   .255
   MOVWF   A1
   MOVWF   A2
   CALL   CAKAJ

RETURN


CAKAJ
   DECFSZ   A1
   GOTO   $-1
   DECFSZ   A2
   GOTO   $-1
   RETURN

;RED UP/DN
RUP
   MOVLW   .1
   CALL   REDINC
   BTFSC   STATUS,2
   CALL   REDDEC
   GOTO   JADRO

RDN
   MOVLW   .1
   CALL   REDDEC
   BTFSC   STATUS,2
   CALL   REDINC
   GOTO   JADRO

REDDEC
   BTFSC   LEDSET,0
   SUBWF   R1ON
   BTFSC   LEDSET,1
   SUBWF   R2ON
   BTFSC   LEDSET,2
   SUBWF   R3ON
   BTFSC   LEDSET,3
   SUBWF   R4ON
   BTFSC   LEDSET,4
   SUBWF   R5ON
   BTFSC   LEDSET,5
   SUBWF   R6ON
   BTFSC   LEDSET,6
   SUBWF   R7ON
   BTFSC   LEDSET,7
   SUBWF   R8ON
RETURN

REDINC
   BTFSC   LEDSET,0
   ADDWF   R1ON
   BTFSC   LEDSET,1
   ADDWF   R2ON
   BTFSC   LEDSET,2
   ADDWF   R3ON
   BTFSC   LEDSET,3
   ADDWF   R4ON
   BTFSC   LEDSET,4
   ADDWF   R5ON
   BTFSC   LEDSET,5
   ADDWF   R6ON
   BTFSC   LEDSET,6
   ADDWF   R7ON
   BTFSC   LEDSET,7
   ADDWF   R8ON
RETURN


;GREEN UP/DN
GUP
   MOVLW   .1
   CALL   GREENINC
   BTFSC   STATUS,2
   CALL   GREENDEC
   GOTO   JADRO

GDN
   MOVLW   .1
   CALL   GREENDEC
   BTFSC   STATUS,2
   CALL   GREENINC
   GOTO   JADRO

GREENDEC
   BTFSC   LEDSET,0
   SUBWF   G1ON
   BTFSC   LEDSET,1
   SUBWF   G2ON
   BTFSC   LEDSET,2
   SUBWF   G3ON
   BTFSC   LEDSET,3
   SUBWF   G4ON
   BTFSC   LEDSET,4
   SUBWF   G5ON
   BTFSC   LEDSET,5
   SUBWF   G6ON
   BTFSC   LEDSET,6
   SUBWF   G7ON
   BTFSC   LEDSET,7
   SUBWF   G8ON
RETURN

GREENINC
   BTFSC   LEDSET,0
   ADDWF   G1ON
   BTFSC   LEDSET,1
   ADDWF   G2ON
   BTFSC   LEDSET,2
   ADDWF   G3ON
   BTFSC   LEDSET,3
   ADDWF   G4ON
   BTFSC   LEDSET,4
   ADDWF   G5ON
   BTFSC   LEDSET,5
   ADDWF   G6ON
   BTFSC   LEDSET,6
   ADDWF   G7ON
   BTFSC   LEDSET,7
   ADDWF   G8ON
RETURN

;BLUE UP/DN
BUP
   MOVLW   .1
   CALL   BLUEINC
   BTFSC   STATUS,2
   CALL   BLUEDEC
   GOTO   JADRO

BDN
   MOVLW   .1
   CALL   BLUEDEC
   BTFSC   STATUS,2
   CALL   BLUEINC
   GOTO   JADRO

BLUEDEC
   BTFSC   LEDSET,0
   SUBWF   B1ON
   BTFSC   LEDSET,1
   SUBWF   B2ON
   BTFSC   LEDSET,2
   SUBWF   B3ON
   BTFSC   LEDSET,3
   SUBWF   B4ON
   BTFSC   LEDSET,4
   SUBWF   B5ON
   BTFSC   LEDSET,5
   SUBWF   B6ON
   BTFSC   LEDSET,6
   SUBWF   B7ON
   BTFSC   LEDSET,7
   SUBWF   B8ON
RETURN

BLUEINC
   BTFSC   LEDSET,0
   ADDWF   B1ON
   BTFSC   LEDSET,1
   ADDWF   B2ON
   BTFSC   LEDSET,2
   ADDWF   B3ON
   BTFSC   LEDSET,3
   ADDWF   B4ON
   BTFSC   LEDSET,4
   ADDWF   B5ON
   BTFSC   LEDSET,5
   ADDWF   B6ON
   BTFSC   LEDSET,6
   ADDWF   B7ON
   BTFSC   LEDSET,7
   ADDWF   B8ON
RETURN

NEXT
   BTFSC   LEDSET,0
   MOVLW   .2
   BTFSC   LEDSET,1
   MOVLW   .4
   BTFSC   LEDSET,2
   MOVLW   .8
   BTFSC   LEDSET,3
   MOVLW   .16
   BTFSC   LEDSET,4
   MOVLW   .32
   BTFSC   LEDSET,5
   MOVLW   .64
   BTFSC   LEDSET,6
   MOVLW   .128
   BTFSC   LEDSET,7
   MOVLW   .1
   MOVWF   LEDSET
   GOTO   JADRO

PREW
   BTFSC   LEDSET,0
   MOVLW   .128
   BTFSC   LEDSET,1
   MOVLW   .1
   BTFSC   LEDSET,2
   MOVLW   .2
   BTFSC   LEDSET,3
   MOVLW   .4
   BTFSC   LEDSET,4
   MOVLW   .8
   BTFSC   LEDSET,5
   MOVLW   .16
   BTFSC   LEDSET,6
   MOVLW   .32
   BTFSC   LEDSET,7
   MOVLW   .64
   MOVWF   LEDSET
   GOTO   JADRO

RESETT
   MOVLW   .1
   MOVWF   R1ON
   MOVWF   B1ON
   MOVWF   G1ON

   MOVWF   R2ON
   MOVWF   B2ON
   MOVWF   G2ON

   MOVWF   R3ON
   MOVWF   B3ON
   MOVWF   G3ON

   MOVWF   R4ON
   MOVWF   B4ON
   MOVWF   G4ON

   MOVWF   R5ON
   MOVWF   B5ON
   MOVWF   G5ON

   MOVWF   R6ON
   MOVWF   B6ON
   MOVWF   G6ON

   MOVWF   R7ON
   MOVWF   B7ON
   MOVWF   G7ON

   MOVWF   R8ON
   MOVWF   B8ON
   MOVWF   G8ON

   MOVLW   B'00000001'   ;LED0
   MOVWF   LEDSET
   GOTO   JADRO

END
Přílohy
schema.jpg
(288.7 KiB) Staženo 193 x
Uživatelský avatar
Bernard
Příspěvky: 3654
Registrován: 27 kvě 2005, 00:00

#2 Příspěvek od Bernard »

Promiň, INKOGNITTO, ten off-topic, já se v PICech nevyznám, ale v tom zdrojáku vidím smajly "Shocked", a to mě šokuje. Snad ty meta-tagy Code tu slouží na to, aby se zobrazil text jak byl napsán, ale postupnosti znaků "8" a "O" to zkrátka neodolá.

Kód: Vybrat vše

8O

:wink:
Uživatelský avatar
daymoon
Příspěvky: 12
Registrován: 26 pro 2009, 00:00
Bydliště: Brno

#3 Příspěvek od daymoon »

Příliš mnoho opakujícího se kódu. Je to dlouhý jak tejden a furt tam vidím ty samý kontrukce jednu za druhou.

Nechtěl bych takový program upravovat ani za svět.
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“