Vara lat med fjärrkontrollen (4 / 5 steg)
Steg 4: Kod för 8051 mikrokontroller
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ;
; TV-fjärrkontroll baserat hem apparaten växelsystem. ;
; Jaspal Singh;
; 05/06/2015.
; ;
; ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
$mod51
VAR1 equ r7; Tillfälliga variabeln
TEMP equ 10H; Temp variabel
GREVE equ 11H; Greve
ADDR equ 12H; enhetsadress
CMD equ 13H; Kommandot
KNÄPPA lite 00H; Knäppa lite
TOG lite 01H; Mallfräs för flip
IR equ P3.3; IR-mottagare ansluten till detta stift
SW1 equ P1.0; Växel 1 anslutas här
Sw2 equ P1.1; Växel 2 ansluten här
SW3 equ P1.2; Switch 3 anslutas här
SW4 equ P1.3; Switch 4 anslutas här
SW5 equ P1.4; Switch 5 anslutas här
SW6 equ P1.5; Switch 6 anslutas här
SW7 equ P1.6; Växel 7 anslutas här
SW8 equ P1.7; Switch 8 anslutas här
SWport equ P1; Port som växlar är anslutna
org 00H; Start för prog
MOV SWport, #00 H, stänga alla reläer!
MOV sp, #50 tim. Stack pekaren initiering
CLR TOG; Tydlig Mallfräs
viktigaste:
JB IR, $; Vänta på första biten
MOV VAR1, #255; 3.024mS fördröja
djnz VAR1 $
MOV VAR1, #255
djnz VAR1 $
MOV VAR1, #255
djnz VAR1 $
MOV VAR1, #255
djnz VAR1 $
MOV VAR1, #255
djnz VAR1 $
MOV VAR1, #100
djnz VAR1 $
MOV c, IR; Läs Flip bit
MOV FLIP, c
CLR A
MOV räkna, #5. Räkningen för adress
fadd:
MOV VAR1, #255; 1.728mS fördröjning för varje bit
djnz VAR1 $
MOV VAR1, #255
djnz VAR1 $
MOV VAR1, #255
djnz VAR1 $
MOV VAR1, #4
djnz VAR1 $
MOV c, IR
RLC en
djnz räkna, Folkesson
MOV ADDR, A; Spara adressen
CLR en
MOV räkna, #6. Räkningen för kommandot
fcmd:
MOV VAR1, #255; 1.728mS fördröjning för varje bit
djnz VAR1 $
MOV VAR1, #255
djnz VAR1 $
MOV VAR1, #255
djnz VAR1 $
MOV VAR1, #4
djnz VAR1 $
MOV c, IR
RLC en
djnz räkna, fcmd
MOV TEMP, CMD; Spara det gamla kommandot
MOV CMD, a; Spara det nya kommandot
MOV a, ADDR; Cheack för giltig adress
cjne en, #00, nvalid
MOV a, TEMP
cjne a, CMD, giltiga. Kontrollera om det finns giltigt kommando
nvalid:
ljmp huvudsakliga
giltig:; Knapptryckning check
CLR en
MOV c, FLIP
RLC en
MOV TEMP, en
CLR en
MOV c, TOG
RLC en
cjne a, TEMP, valid1
sjmp nvalid
valid1:
MOV c, FLIP
MOV TOG, c
MOV a, CMD
CLR c
cjne a, #1, skip1; Kontrollera om SW1
JB SW1, isset1
setb SW1
ljmp huvudsakliga
isset1:
CLR SW1
ljmp huvudsakliga
skip1:
cjne a, #2, skip2; Kontrollera om SW2
JB SW2, isset2
setb SW2
ljmp huvudsakliga
isset2:
CLR SW2
ljmp huvudsakliga
skip2:
cjne a, #3, skip3; Kontrollera om SW3
JB SW3, isset3
setb SW3
ljmp huvudsakliga
isset3:
CLR SW3
ljmp huvudsakliga
skip3:
cjne a, #4, skip4; Kontrollera om SW4
JB SW4, isset4
setb SW4
ljmp huvudsakliga
isset4:
CLR SW4
ljmp huvudsakliga
skip4:
cjne a, #5, skip5; Kontrollera om SW5
JB SW5, isset5
setb SW5
ljmp huvudsakliga
isset5:
CLR SW5
ljmp huvudsakliga
skip5:
cjne a, #6, skip6; Kontrollera om SW6
JB SW6, isset6
setb SW6
ljmp huvudsakliga
isset6:
CLR SW6
ljmp huvudsakliga
skip6:
cjne a, #7, skip7; Kontrollera om SW7
JB SW7, isset7
setb SW7
ljmp huvudsakliga
isset7:
CLR SW7
ljmp huvudsakliga
skip7:
cjne a, #8, skip8; Kontrollera om SW8
JB SW8, isset8
setb SW8
ljmp huvudsakliga
isset8:
CLR SW8
ljmp huvudsakliga
skip8:
cjne a, #0CH, avsluta; Check för alla växlar
MOV SWport, #00 H
ljmp huvudsakliga
avsluta:
ljmp huvudsakliga
SLUTET; Slutet av program
Sammanställa asm filen i valfritt 8051 assembler program. Jag har använt denna ASEM-51 assebler. Det skapar hex-fil som vi behöver ladda upp till microcontroller med 8051 programmerare. Jag har använt "Top win Universal programmerare". Kolla det här Top vinna produkter. Det kan vara gränssnitt med så många mikrokontrollers, eeproms etc.