51单片机第8步_absacc.h库函数

本章重点学习库函数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(;;)

{ DBYTE[0x7f]='1'; //向内部RAM的地址0x7f单元写入1的ascii码;

byte_in_internal_ram=DBYTE[0x7f]; //将内部RAM中地址为0x7f的内容保存到变量中;

DWORD[0x3f]=0x2010; //向内部RAM的地址0x7e和0x7f单元写入0x2010;

int_in_internal_ram=DWORD[0x3f]; //将内部RAM中地址为0x7e和0x7f的内容保存到变量中;

PBYTE[0x7f]=0xff; //向外部RAM的地址0x007f写入0xff;

byte_in_pdata_ram=PBYTE[0x7f]; //将外部RAM中地址为0x007f的内容保存到变量中;

PWORD[0x003e]=0x2010; //向外部RAM的地址0x007e和0x007f单元写入0x2010;

int_in_pdata_ram=PWORD[0x003e]; //将外部RAM中地址为0x007f的内容保存到变量中;

XBYTE[0x007f]=0xff; //向外部RAM的地址0x007f写入0xff;

byte_in_xdata_ram=XBYTE[0x007f]; //将外部RAM中地址为0x007f的内容保存到变量中;

XWORD[0x003f]=0x2010; //向外部RAM的地址0x007e和0x007f单元写入0x2010;

int_in_xdata_ram=XWORD[0x003f]; //将外部RAM中地址为0x007f的内容保存到变量中;

char_in_code=CBYTE[0x0000]; //将位于程序存储区地址为0x0000处内容保存到变量中;

char_in_code=CBYTE[0x0001]; //将位于程序存储区地址为0x0001处内容保存到变量中;

int_in_code=CWORD[0x0000]; //将位于程序存储区地址为0x0000处内容保存到变量中;

char_value1='2'; //向内部RAM的地址0x7f单元写入2的ascii码;

char_value='3'; //向内部RAM的地址0x7f单元写入3的ascii码;

}

}

相关推荐
Mortal_hhh23 分钟前
VScode的C/C++点击转到定义,不是跳转定义而是跳转声明怎么办?(内附详细做法)
ide·vscode·stm32·编辑器
深圳市青牛科技实业有限公司36 分钟前
【青牛科技】应用方案|D2587A高压大电流DC-DC
人工智能·科技·单片机·嵌入式硬件·机器人·安防监控
Mr.谢尔比2 小时前
电赛入门之软件stm32keil+cubemx
stm32·单片机·嵌入式硬件·mcu·信息与通信·信号处理
LightningJie2 小时前
STM32中ARR(自动重装寄存器)为什么要减1
stm32·单片机·嵌入式硬件
鹿屿二向箔2 小时前
STM32外设之SPI的介绍
stm32
西瓜籽@2 小时前
STM32——毕设基于单片机的多功能节能窗控制系统
stm32·单片机·课程设计
远翔调光芯片^138287988725 小时前
远翔升压恒流芯片FP7209X与FP7209M什么区别?做以下应用市场摄影补光灯、便携灯、智能家居(调光)市场、太阳能、车灯、洗墙灯、舞台灯必看!
科技·单片机·智能家居·能源
极客小张5 小时前
基于STM32的智能充电桩:集成RTOS、MQTT与SQLite的先进管理系统设计思路
stm32·单片机·嵌入式硬件·mqtt·sqlite·毕业设计·智能充电桩
m0_739312878 小时前
【STM32】项目实战——OV7725/OV2604摄像头颜色识别检测(开源)
stm32·单片机·嵌入式硬件
嵌入式小章8 小时前
基于STM32的实时时钟(RTC)教学
stm32·嵌入式硬件·实时音视频