设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 1729|回复: 1
收起左侧

C51/STC系列单片机获取XDATA/XRAM总容量 MOVX 有效寻址可读写总字节数并通过串口发送

[复制链接]
发表于 2018-11-11 20:10:29 | 显示全部楼层 |阅读模式


  1. #include "reg51.h"
  2. #define U8 unsigned char
  3. #define U16 unsigned int
  4. #define U32 unsigned long
  5. U8 xdata *xram;


  6. sbit txd=P3^1; //数据发送口


  7. void delay_uart(){        //11.0592Mhz@9600Bps
  8.     U8 a,b;
  9.     for(b=3;b>0;b--)
  10.         for(a=94;a>0;a--);
  11. }
  12.         void txd_data(U8 i){                  //串口发字节
  13.         U8 j=1,k=8;
  14.         delay_uart();
  15.         txd=0;
  16.         while(k--){
  17.         delay_uart();
  18.         txd=(i&j)/j;
  19.         j<<=1;
  20.         }
  21.         delay_uart();
  22.         txd=1;  
  23.         }

  24. void txd_long(U32 l){                        //串口发32位长整数
  25.         txd_data(l>>24);
  26.         txd_data(l>>16);
  27.         txd_data(l>>8);
  28.         txd_data(l);

  29. }
  30. U8 rx(U16 pc){
  31. xram=0;
  32. return xram[pc];
  33. }

  34. void wx(U16 pc,U8 l){
  35. xram=0;
  36. xram[pc]=l;
  37. }

  38. bit is_xdata(U16 pc){                //XDATA 是否可正常读写 (参数:16位地址 可读写返回1 否则返回0)
  39.         U8 old=rx(pc);                        //地址数据取出

  40.         wx(pc,0xAA);                        //将0xAA送入xdata
  41.         if(rx(pc)!=0xAA) return 0;                //取出的不是0xAA就表示不能读写
  42.         wx(pc,old);                        //将取出的数据送回
  43.         return 1;
  44. }



  45. U32 get_xdata_size(){                //取XDATA容量
  46. U32 pc=0;
  47. while(is_xdata(pc)){
  48.         pc++;
  49.         if(pc>=65536) break;                //溢出
  50. }

  51. return pc;
  52. }

  53. void main(){
  54. U32 xsize;       
  55.         xsize=get_xdata_size();        //取XDATA容量
  56.         txd_long(0xABCD1234);        //发送4字节确保收到的不是乱码
  57.         txd_long(xsize);                //发送XDATA容量

  58.         while(1);
  59. }


复制代码

您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-4-20 04:42 , Processed in 0.364021 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表