En el caso de que los registros sean consecutivos, en este caso Porta A y B, el CCS permite crear lo siguiente:
Se crea un STRUCT con un registro de 16Bits.
Se crea un puntero de esa estructura que apunta a la dirección menos significativa, en este caso el Puerto A y listo, ya tenemos un tipo de dato nuevo que trabaja sobre los dos puertos A y B, siendo el puerto A el byte menos significativo y el Puerto B el Byte más significativo del nuevo registro creado de 16bits.
Código:
//Placa entrenadora PicEBasic (PIC16F88)
//Test puerto RS232, LCD, I/O
#include <16F88.h>
#device adc=10
#use delay(internal=8000000)
//#use delay (clock = 20000000) //Reloj a 20Mhz
//#FUSES HS //Fast clock
#fuses NOMCLR
#FUSES PUT //Power-up Timer
#FUSES BROWNOUT //Brown-out reset
#FUSES NOWDT //No, Watchdog Timer
#FUSES NOCPD //No, Data EEPROM Memory Code Protection
#FUSES NOPROTECT //No, (CP) Flash Program Memory Code Protection
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#BYTE PORTA = 0x05
#BYTE PORTB = 0x06
#BYTE TRISA = 0x85
#BYTE TRISB = 0x86
#BYTE PIR1 = 0x0C
#Include "_FunctionesTmrBase.h"
#Include "DISPLAY 7SEGMENTOS 4 DIGITOS.h"
//#include "Flex_Lcd.c"
//#use rs232 (UART1, BAUD = 4800, PARITY=N, BITS=8, TIMEOUT=1)
#use fast_io (a)
#use fast_io (b)
//#use fast_io (c)
void main(){
Setup_adc_ports(NO_ANALOGS);
TRISA = 0b00000000;
TRISB = 0b00000000;
PORTB = 0b00000000;
PORTA = 0b11010000;
struct MyPort {
Unsigned Int16 PORTAB;
};
struct MyPort *pPORTAB = &PORTA; //Apunta al puerto A, que será el Byte menos significativo del nuevo puerto unión Port A y B.
while(true) {
pPORTAB -> PORTAB = 0b1000000011111010; //Asigna valor al nuevo puerto.
}
}
Se crea un STRUCT con un registro de 16Bits.
Se crea un puntero de esa estructura que apunta a la dirección menos significativa, en este caso el Puerto A y listo, ya tenemos un tipo de dato nuevo que trabaja sobre los dos puertos A y B, siendo el puerto A el byte menos significativo y el Puerto B el Byte más significativo del nuevo registro creado de 16bits.
Última edición: