Jít k navigaci - Jít k vyhledávání


Ovládání PORTx přes COM port

05. 06. 10 - 08:23. Napsal Jiří Chytil. Přečteno 4517x. 214 komentářů

Ovládání jednotlivých pinů portů mikrokontroleru pomocí instrukcí posílaných přes COM (RS232). Při využití bitů 3-6 lze adresovat až 16 portů. Teoreticky by tedy bylo možné adresovat až 128 pinů.

468x60.gif Doporučujeme virtuálního opertátora GoMobil.cz | Reklamní sdělení

Program funguje tak, že přijme data z COM portu (asynchronní přenos) a uloží je do proměnné datt; tři nejnižší bity (0-2) adresují pin portu. Pomocí proměnné pocet a instrukce RLF se vytvoří maskovací byte. Pokud by byly využity bity 3-6, určily by, který bit se má použít. Tento program je ale pro PIC16F84A a využívá proto pouze PORTB. Bit MSB - nejvyšší bit - určuje, do jakého stavu se port nastaví, pokud je v log. 1 nastaví se do log. 1, a naopak. To se provede použitím maskovacího bytu pocet a instrukcí ANDWF a IORWF

		INCLUDE	"P16F84A.INC"
		LIST 	P=16F84A, R=DEC

		__CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

;- nastavení COM portu: -----------------------------------------
;
;                     2400 Baud
;                     8 bit
;                     none parity
;                     none handshake (pomocné linky)
;
;- Proměnné ----------------------------------------------------

c1		EQU		h'20'		;proměnné pro cykly
pocet		EQU		h'23'		;počet bitů
datt		EQU		h'24'		;data z portu
tatt		EQU		h'25'		;temp data

;- Nastavení v/v -----------------------------------------------
			
		BSF		STATUS,RP0	;přesun do banky 1
		MOVLW		b'00000001'	;nastavení v/v
		MOVWF		TRISA
		MOVLW		b'00000000'
		MOVWF		TRISB
		BCF		STATUS,RP0	;přesun zpět do banky 0

;- Vlastní program ---------------------------------------------

zacatek		BTFSC		PORTA,0		;čekání na start bit
		GOTO		get		
		GOTO		zacatek		

;- přijem dat --------------------------------------------------
		
get		CALL		prodleva
		CALL		prodleva
		CALL		prodleva
		MOVLW		8
		MOVWF		pocet
		MOVLW		255
		MOVWF		datt
		
next		BTFSS		PORTA,0
		BCF		STATUS,C
		BTFSC		PORTA,0
		BSF		STATUS,C
		RRF		datt,1		;ukládání do datt
		CALL		prodleva
		CALL		prodleva
		DECFSZ		pocet,1
		GOTO		next
		CALL		prodleva
		CALL		prodleva

;- čekání na stop bit ------------------------------------------

konec		BTFSC		PORTA,0	
		GOTO		konec

;- zpracovaní přijatých dat ------------------------------------

		COMF		datt,1		;inverze datt
		MOVLW		b'00000001'	;výchozí pozice
		MOVWF		pocet		;maskovacího bitu počet
		MOVF		datt,0
		ANDLW		b'00000111'	;maskovaní na hodnotu 0-7
		MOVWF		tatt		;bity b3-b7 se vynulují 
		
repe		MOVF		tatt,1		;nastavení maskovacího
		BTFSC		STATUS,Z	;bytu počet 
		GOTO		output
		BCF		STATUS,C
		RLF		pocet,1
		DECF		tatt,1
		GOTO		repe

output		MOVF		datt,0		;rozhodnutí zda se
		ANDLW		b'10000000'	;má bit nulovat
		BTFSC		STATUS,Z	;nebo nastavit
		GOTO		output0

output1		MOVF		pocet,0		;maskování portu
		IORWF		PORTB,1		;na nastavení bitu
		GOTO		zacatek
				

output0		COMF		pocet,0		;maskování portu
		ANDWF		PORTB,1		;na nulování bitu
		GOTO		zacatek

;- podprogram prodlevy ---------------------------------------------

prodleva	MOVLW		63
		MOVWF		c1
wait		DECFSZ		c1,1
		GOTO		wait
		RETURN	
				
		END

Kód: Assembler PIC16F84A - Ovládání PortuB přes COM port


Autor
Jiří Chytil

Jiří Chytil24 let

Šéfredaktor 8bitu.cz. V současné době je studentem prvního ročníku magisterského studia na Fakultě elektrotechické na VUT v Brně. Mezi jeho koníčky patří elektrotechnika, bastlení, programování a hudba. Pracuje na částečný úvazrek ve společnosti Honeywell HTS ACS.


Novinky Další novinky

[25. 06.]  A tentokráte vás zdravím z města New York.
[17. 06.]  Zdravim vas z Bostonu vazeni ctenari.
[10. 03.]  Tak jsem pro Vás připravil novou anketu. A snažím se pokračovat na projektu jehož výsledky bych zde rád zveřejnil, ale poněkud mě brzdí diplomová práce a práce.
[30. 01.]  Omlouvám se za nečinnost způsobenou značným nedostatkem času. Nevím, ale jestli se mi to podaří změnit. To víte, člověk stárne a jeho čas je potřeba jinde než na internetu.
[07. 03.]  Po dlouhé době jsme pro vás přichystali novou anketu - najdete ji níže v pravém panelu.

Reklama

Okruháři.cz

E-shop s příbory Toner - levné příbory

Virtuální operátor GoMobil - levné volání

Programujte.com

Léčivé obrazy - enkaustika Lenka Blažíková

Keramika Věra Coufalová - užitková keramika

Anketa

Jaký další modul byste ocenili v softwaru DSE?

RC články - pasivní

RC články - aktivní

Normované filtry

Syntetické indukčnosti

Materiálové tabulky

COM terminál

Design pro 555

Výpočet transformátoru

Výpočet uPásku

Výpočet štěrbinového vedení

Návrh Step-Up měniče

Návrh invertujícího měniče

Transfigurace trojúhelník-hvězda

Předřadník a bočník