Skip to content

Instantly share code, notes, and snippets.

@Dovias
Last active November 13, 2025 13:57
Show Gist options
  • Select an option

  • Save Dovias/fac29bd4087e2c2d0b4d1f57e70c6f99 to your computer and use it in GitHub Desktop.

Select an option

Save Dovias/fac29bd4087e2c2d0b4d1f57e70c6f99 to your computer and use it in GitHub Desktop.

Trumpas paruoštukas techninės įrangos programavimo kontroliniam darbui:

Opkodai

Baitų lygmens opkodai

Opkodas, operandai Opkodo aprašymas Bitflagai
ADDWF f, d Sumuoti W su f registrų turinį d registre C, DC, Z
ADDLW k Sumuoti k su W C, DC, Z
ANDWF f, d Vykdyti AND operaciją tarp W ir f registrų turinio d registre Z
ANDLW k Vykdyti AND operaciją tarp k ir W Z
CLRF f Išvalyti f registrą Z
CLRW Išvalyti W registrą Z
COMF f, d Vykdyti NOT operaciją f registro turiniu d registre Z
DECF f, d Vienetu sumažinti f registro turinį d registre Z
DECFSZ f, d Vienetu sumažinti f registro turinį d registre bei peršokti, jei šio reikšmė 0
INCF f, d Vienetu padidinti registrą f Z
INCFSZ f, d Vienetu padidinti f registro turinį d registre bei peršokti, jei šio reikšmė 0
IORWF f, d Vykdyti OR operaciją tarp W ir f registrų turinio d registre Z
IORLW k Vykdyti OR operaciją tarp konstantos k ir W registro Z
MOVF f, d Perkelti f registro turinį į d registrą Z
MOVLW k Įkelti k konstantą į W registrą
MOVWF f Perkelti W registro turinį į f registrą
RLF f, d Vienu bitu perstumti f registro turinį į kairę d registre C
RRF f, d Vienu bitu perstumti f registro turinį į dešinę d registre C
SUBWF f, d Atimti Wf C, DC, Z
SUBLW k Atimti Wk C, DC, Z
SWAPF f, d Apkeisti f registro turinio 4 bitų grupes vietomis d registre
XORWF f, d Vykdyti XOR operaciją tarp W ir f registrų turinio d registre Z
XORLW k Vykdyti XOR operaciją tarp W registro ir konstantos k Z

Note

Registras d yra kodas, nurodantis į kurį registrą bus įrašomas gautas rezultatas. Jei nurodyta registro d reikšmė yra 0, rezultatas yra įkeliamas į W registrą, o jei d yra 1, rezultatas yra įrašomas į f registrą.

Note

Bitai žymintis operacijų bitflagus yra saugomi 0 duomenų banko STATUS registre.

Bitų lygmens opkodai

Opkodas, operandai Opkodo aprašymas Bitflagai
BCF f, b Nustatyti f registro b bitą į 0
BSF f, b Nustatyti f registro b bitą į 1
BTFSC f, b Patikrinti f registro b bitą bei peršokti, jei šio reikšmė 0
BTFSS f, b Patikrinti f registro b bitą bei peršokti, jei šio reikšmė 1

Valdymo opkodai

Opkodas, operandai Opkodo aprašymas Bitflagai
NOP Vykdyti tuščią operaciją
CALL k Iškviesti konstantos k adrese esančią funkciją
CLRWDT Išvalyti WDT registro turinį TO, PD
GOTO k Vykdyti kodą konstantos adrese k
RETFIE Grįžti po pertraukties
RETLW k Grįžti iš funkcijos, įkeliant k konstantą į W registrą
RETURN Grįžti iš funkcijos
SLEEP Pereiti į tausojimo režimą TO, PD

Boilerplate

LIST p=16F84A
#INCLUDE <p16F84a.inc>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

; Kintamujų deklaracijos
 
ORG 0x00

clrf PORTA
clrf PORTB

bsf STATUS, 5
movlw b'00000000'
movwf TRISB
 
movlw b'00000'
movwf TRISA
bcf STATUS, 5

; Vykdomasis kodas

END

Kintamųjų deklaracija

Kint1 EQU 0Ch
Kint2 EQU 0Dh

Note

Kintamujų reikšmės pagal nutylėjimą inicializacijos pradžioje yra lygios 0

Warning

Kintamieji gali būti išskiriami tik nuo 0x0C iki 0x4F atminties (SRAM) apibrėžimo srityje

Sleep realizacija

200 ms. peršokimas

; Kintamieji
_sleep_200_ms_1 EQU 0Ch
_sleep_200_ms_2 EQU 0Dh

sleep_200_ms
decfsz _sleep_200_ms_1, 1
goto sleep_200_ms
decfsz _sleep_200_ms_2, 1
goto sleep_200_ms

; Vykdomasis kodas po 200 ms. sleep

10 ms. funkcija

; Kintamieji
_sleep_10_ms_1 EQU 0Ch
_sleep_10_ms_2 EQU 0Dh

call sleep_10_ms
; Vykdomasis kodas po 10 ms. sleep

sleep_10_ms
movlw d'13'
movwf _sleep_10_ms_1

_sleep_10_ms
decfsz _sleep_10_ms_1, 1
goto _sleep_10_ms
decfsz _sleep_10_ms_2, 1
goto _sleep_10_ms
return

; Programos pabaiga
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment