本章重点学习库函数absacc.h的使用,介绍绝对宏和绝对地址的用法。故事有点老掉牙,但学校的教授们还在继续。
#include <REG52.h> //包含头文件REG52.h,使能51内部寄存器;
#include <absacc.h>
#include <stdio.h> //包含头文件stdio.h
//_getkey();从串口读入一个字符;
//putchar();向串口发送一个字节;
/printf();向串口发送一串字节;
//函数功能:初始化串口,设置波特率为1200bps@16MHz,使能接收,使用8位UART;
void Serial_Port_Initialization()
{ SCON=0x50; //串行控制寄存器: SM0,SM1,SM2,REN,TB8,RB8,TI,RI
//SM1:SM0=01,选择方式1,SM2=0,表示非多机通讯,8-bit UART;
//REN=1,使能接收;
TMOD|=0x20; //定时器方式控制寄存器:GATE1,C/T1,M11,M10,GATE0,C/T0,M01,M00
//GATE=0,TR置1便可以启动Timer;GATE=1,TR置1,且INT脚输入高电平,
//才可以启动Timer;
//M11:M10=10,选择方式2,8位自动重装载;
TH1=221; //TH1: reload value for 1200 baud @ 16MHz
TR1=1; //启动Timer1;
TI=1; //发送UART的第一个字节,为下次发送做准备;
}
unsigned char data char_value at 0x7f; //用_at_定义的变量,必须为全局变量
unsigned char idata char_value1 at 0x7e;
void main(void)
{ unsigned char data byte_in_internal_ram;
unsigned int data int_in_internal_ram;
unsigned char data byte_in_pdata_ram;
unsigned int data int_in_pdata_ram;
unsigned char data byte_in_xdata_ram;
unsigned int data int_in_xdata_ram;
unsigned char data char_in_code;
unsigned int data int_in_code;
Serial_Port_Initialization();//设置波特率为1200bps@16MHz,使能接收,使用8位UART;
for(;;)
{ DBYTE0x7f='1'; //向内部RAM的地址0x7f单元写入1的ascii码;
byte_in_internal_ram=DBYTE0x7f; //将内部RAM中地址为0x7f的内容保存到变量中;
DWORD0x3f=0x2010; //向内部RAM的地址0x7e和0x7f单元写入0x2010;
int_in_internal_ram=DWORD0x3f; //将内部RAM中地址为0x7e和0x7f的内容保存到变量中;
PBYTE0x7f=0xff; //向外部RAM的地址0x007f写入0xff;
byte_in_pdata_ram=PBYTE0x7f; //将外部RAM中地址为0x007f的内容保存到变量中;
PWORD0x003e=0x2010; //向外部RAM的地址0x007e和0x007f单元写入0x2010;
int_in_pdata_ram=PWORD0x003e; //将外部RAM中地址为0x007f的内容保存到变量中;
XBYTE0x007f=0xff; //向外部RAM的地址0x007f写入0xff;
byte_in_xdata_ram=XBYTE0x007f; //将外部RAM中地址为0x007f的内容保存到变量中;
XWORD0x003f=0x2010; //向外部RAM的地址0x007e和0x007f单元写入0x2010;
int_in_xdata_ram=XWORD0x003f; //将外部RAM中地址为0x007f的内容保存到变量中;
char_in_code=CBYTE0x0000; //将位于程序存储区地址为0x0000处内容保存到变量中;
char_in_code=CBYTE0x0001; //将位于程序存储区地址为0x0001处内容保存到变量中;
int_in_code=CWORD0x0000; //将位于程序存储区地址为0x0000处内容保存到变量中;
char_value1='2'; //向内部RAM的地址0x7f单元写入2的ascii码;
char_value='3'; //向内部RAM的地址0x7f单元写入3的ascii码;
}
}