  | 
		 
			
			
			
			
			
	
		
			
  
 | 
	 		
	  			
	  				| 
						  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 2025 11 04, 06:21. 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 | 
	 
	
	  | 
	    
	    	Dantų protezavimas 
	    	All on 4 implantai, 
		Endodontija mikroskopu, 
		Dantų implantacija | 
	 
	
	  | 
	    
	    	FS25 Mods 
	    	FS25 Maps,
		FS25 Cheats,
		FS25 Install Mods | 
	 
	
	  | 
	    
	    	FS25 Mods 
	    	Farming Simulator 25 Mods, 
	    	FS25 Maps | 
	 
	
	  | 
	    
	    	ATS Trailers 
	    	American Truck Simulator Mods,
		ATS Trucks,
		ATS Maps | 
	 
 
 
		 | 
	 
 
			
			 
 
 
  | 
		  |