|
|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2024 11 24, 10:51. Visos datos yra GMT + 2 valandos.
|
|
|
|
Forumas » Mikrovaldikliai » ASM, 16bit, PIC, Interuptai
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
|
ASM, 16bit, PIC, Interuptai |
Parašytas: 2017 10 13, 17:54 |
|
|
|
Pradėjau mokytis 16 bitų mikrovaldiklius. Pasidariau maketą su PIC24F16KA101. LED'uką pamirksinau. Užstrigau ant interuptų. Pagal aplication notą sujungiau viską, bet trūksta "org 0x04" analogo iš 8 bitų mikrovaldiklių programavimo. Gal kas susidūręs ir žino kaip teisingai parašyti šią direktyvą (asembleryje)? |
|
|
|
|
|
|
|
|
ASM, 16bit, PIC, Interuptai |
Parašytas: 2017 10 16, 15:54 |
|
|
|
hencia rašo: |
Nežinau, bet ir man gali būti aktualu, todėl - |
Pagaliau išgimdžiau.
Projekto sukūrimas - MPLAB X projekte turi būti įtrauktas .gld failas (randasi Program Files / Microchip / MPLAB C30 / support) su atitinkamo MCU pavadinimu bei įtrauktas .s failas, kuriame saugomas programuotojo asemblerinis kodas.
Kodo šabloniukas žemiau.
".global __reset" +" __reset:" + ".text" būtini ale nurodyti programos pradžią.
".global __INT1Interrupt" - frazė po global turi griežtai sutapti su .gld faile esančiu interupto pavadinimu. Programos gabalas, kuriame apdrojamas interuptas, taip pat su analogišku pavadinimu plius dvitaškis kiekvienai žymei naudojamas.
Kodas: |
;=========================================== ====================================
; Pirmukas bandymukas
;===============================================================================
.include "P24F16KA101.inc"
;===============================================================================
; Hardwaro konfiguracija
;===============================================================================
config FBS, BWRP_ON & BSS_HI2K
config FGS, GWRP_ON & GCP_ON
config FOSCSEL, FNOSC_FRC & IESO_OFF
config FOSC, POSCMOD_NONE & OSCIOFNC_ON & SOSCSEL_SOSCLP & FCKSM_CSDCMD
config FWDT, WINDIS_OFF & FWDTEN_OFF
config FPOR, BOREN_BOR3 & PWRTEN_ON & BORV_V27 & MCLRE_OFF
config FICD, ICS_PGx1 & COE_OFF & BKBUG_OFF
config FDS, DSWDTEN_OFF
;===============================================================================
; Kintamieji
;===============================================================================
.data
COUNTER1: .word 0x0800
COUNTER2: .word 0x0802
;===============================================================================
; Programos pradzios nurodymas
; Interuptu aktyvavimas, adreso suteikimas vektoriu lentelei
;===============================================================================
.global __reset
.global __INT1Interrupt
;===============================================================================
; Butina dalis pagal template
;===============================================================================
.text
__reset:
mov #__SP_init, W15 ; Initalize the Stack Pointer
mov #__SPLIM_init, W0 ; Initialize the Stack Pointer Limit Register
mov W0, SPLIM
nop ; Add NOP to follow SPLIM initialization
;===============================================================================
; Inicializacija
;===============================================================================
INIT:
mov #0b0000000000101001, W0
mov W0, TRISA
mov #0b0100000000000100, W0
mov W0, TRISB
mov #0b0000000000010110, W0
mov W0, LATA
clr LATB
mov #0b1111111111110110, W0
mov W0, AD1PCFG
bset INTCON2, #1 ; INT1 interuptas ant krentancio fronto
bclr IFS1, #4 ; Nuleidziame INT1 veliavele
bset IEC1, #4 ; Ijungiame INT1 interrupta
bclr LATA, #1 ; Ijungiame pirma skaitmeni
;===============================================================================
; Programa
;===============================================================================
MINI:
bset LATB, #12 ; Uzdegame A segmenta
call DELAY
bclr LATB, #12 ; Gesiname A segmenta
call DELAY
goto MINI
;===============================================================================
; Mygtuko interuptas
;===============================================================================
__INT1Interrupt:
......
......
......
retfie
;===============================================================================
; Velinimo paprograme
;===============================================================================
DELAY:
......
......
......
return
;===============================================================================
.end
|
|
|
|
|
|
|
|
ASM, 16bit, PIC, Interuptai |
Parašytas: 2017 10 16, 18:00 |
|
|
|
O va čia include "P24F16KA101.inc" turi būti vardams __reset ir kitiems priskirti adresai... |
|
|
|
|
|
ASM, 16bit, PIC, Interuptai |
Parašytas: 2017 10 16, 18:10 |
|
|
|
krienas rašo: |
O va čia include "P24F16KA101.inc" turi būti vardams __reset ir kitiems priskirti adresai... |
Nes taip buvo pas visokius armus? Includo faile yra tik hardwaro konfigūracijos variantai bei vardų priskyrimas registrų bitams. Kiti velniai sėdi .gld faile. |
|
|
|
|
|
ASM, 16bit, PIC, Interuptai |
Parašytas: 2017 11 01, 00:25 |
|
|
|
Turit minčių kaip pakeisti PC (program counter) reikšmę?
Tokia konstrukcija neveikia ir realiai, ir simuliacijoje ->
mov #6, W0 ; W0 = 6 dec
add PCL ; PCL = PCL + W0
Po kiekvienos komandos PC padidėja 2. Tai po antrosios pateikto kodo eilutės turėtų būti peršokama per tris komandas į priekį (PC + 6). Bet neperšokama, o vykdoma sekanti eilutė (PC + 2). |
|
|
|
|
|
ASM, 16bit, PIC, Interuptai |
Parašytas: 2017 11 02, 10:12 |
|
|
|
PIC'ais uzsiimut ik kai mane prispaudzia prasinetojai, tad nepamenu visu instrukciju, bet garantuotai suveiktu
PUSH reg
RET
bet gali pasiknisti lenteleje ir rasti kazka is "Indirect Jump By Register" |
|
|
|
|
|
|
Google paieška forume |
|
|
Naujos temos forume |
|
|
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
|
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
|
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
|
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
|
LEGO
Mänguköök,
mudelautod,
nukuvanker |
|
Thermal monocular
Thermal vision camera,
Night vision ar scope,
Night vision spotting scope |
|
FS25 Mods
FS25 Harvesters,
FS25 Tractors Mods,
FS25 Maps Mods |
|
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
|
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
|
GTA 6 Weapons
GTA 6 Characters,
GTA 6 Map,
GTA 6 Vehicles |
|
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
|
|
|