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

从F到0 - From F to 0

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

STC单片机获取全球唯一ID序列号并且模拟软件串口发送数据的方法。

[复制链接]
发表于 2017-7-7 11:18:39 | 显示全部楼层 |阅读模式

  1. //单片机STC15F104E获取全球唯一ID序列号并且模拟软件串口发送数据 晶振频率:12Mhz 串口波特率:9600 无校验位 停止位1位

  2. #include"reg51.h" //定义头文件reg51.h
  3. #include"intrins.h" //定义头文件intrins.h
  4. #define ID_ADDR_ROM 0x0ff9 //序列号地址
  5. unsigned char code *cptr; //序列号

  6. unsigned char code hex[16]={ //十六进制字符串数据
  7.         0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46
  8.         };

  9. sbit txd=P3^1; //数据发送口
  10. sfr AUXR   = 0x8E; //定义AUXR寄存器
  11. void delay_uart(){ //延时时间1除以波特率秒
  12.     unsigned char a,b;
  13.     for(b=2;b>0;b--)
  14.         for(a=154;a>0;a--);
  15. }



  16.         void txd_data(unsigned char i){  //发送数据
  17.         unsigned char j=1;//控制移位
  18.         unsigned char k=8;//控制循环次数
  19.                 delay_uart();//延时时间
  20.                 txd=0; //发送起始位,低电平
  21.                 while(k--){ //下面循环8次
  22.                 delay_uart();//延时时间
  23.                 txd=(i&j)/j; //发送数据
  24.                 j<<=1; //左移1位,发送下1位数据
  25.                 }
  26.                 delay_uart();//延时时间
  27.                 txd=1;  //发送停止位
  28.         }


  29. void send_text(unsigned char *text){ //发送字符串
  30.         for(;*text!=0;text++){  //遇到停止符0结束发送
  31.                 txd_data(*text); //发送数据
  32.         }
  33. }


  34. void main(){ //主函数
  35. unsigned char i=0;//计数
  36. AUXR |= 0x80;
  37. cptr = ID_ADDR_ROM;//获取序列号
  38. send_text("芯片出厂序列号:\n");
  39. for(i=0;i<=6;i++){ //发送序列号
  40.         txd_data(hex[(cptr[i]&0xF0)/0x10]);
  41.         txd_data(hex[cptr[i]&0xF]);

  42.         }



  43. while(1); //进入死循环



  44. }

复制代码

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

本版积分规则

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

腾讯云安全认证

GMT+8, 2024-4-19 16:26 , Processed in 0.558032 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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