您的位置:首页 > 财经 > 产业 > 51单片机第8步_absacc.h库函数

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

2024/12/23 5:09:24 来源:https://blog.csdn.net/weixin_42550185/article/details/140072199  浏览:    关键词: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码;

}

}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com