// **********ExtMem.c************ // Extended memory access for DPAGE PPAGE // MC68HC812A4 // Last modified 1/15/02 by Jonathan W. Valvano // Copyright 2002 by Jonathan W. Valvano, valvano@uts.cc.utexas.edu // You may use, edit, run or distribute this file // as long as the above copyright notice remains #include "HC12.h" struct ExtAddr{ unsigned char msb; // DPage A19-A12 PPage A21-A14 unsigned int lsw; // DPage A11-A0 PPage A13-A0 }; typedef struct ExtAddr ExtAddrtype; ExtAddrtype MyPt; char ReadRamByte(ExtAddrtype addr){ char *pt; DPAGE = addr.msb; // set DPage A19-A12 pt = (char*)(0x7000 + addr.lsw); return *pt; } void WriteRamByte(ExtAddrtype addr, char data){ char *pt; DPAGE = addr.msb; // set DPage A19-A12 pt = (char*)(0x7000 + addr.lsw); *pt = data; } int ReadRamWord(ExtAddrtype addr){ int *pt; DPAGE = addr.msb; // set DPage A19-A12 pt = (int*)(0x7000 + addr.lsw); return *pt; } void WriteRamWord(ExtAddrtype addr, int data){ int *pt; DPAGE = addr.msb; // set DPage A19-A12 pt = (int*)(0x7000 + addr.lsw); *pt = data; } void main(void){ char data; int wdata; MyPt.msb = 0; MyPt.lsw = 0; WriteRamByte(MyPt,5); data = ReadRamByte(MyPt); WriteRamWord(MyPt,5000); wdata = ReadRamWord(MyPt); } extern void _start(); #pragma abs_address:0xfffe void (*reset_vector[])() = { _start }; #pragma end_abs_address