历史上的今天
返回首页

历史上的今天

今天是:2025年01月21日(星期二)

正在发生

2020年01月21日 | MSP430随机数产生器

2020-01-21 来源:eefocus

  1. //*****************************************************************************  

  2. //  MSP430-随机数的产生  

  3. //  Built with IAR Embedded Workbench Version: 3.42A  

  4. //  程序功能:产生一个16位的随机数  

  5. //  原理:  

  6. //  AD输入口处于悬浮状态,这样输入的是一个不确定的数字  

  7. //  转换结果的最后一位尤是如此,转换16次(也可以不是16次,  

  8. //  但最大只能是16次,为什么?)后,这16次里有X次转换结果  

  9. //  的LSB是1,则把x放在randomNUM的最高四位,第2次循环得出的  

  10. //  x与第1次的异或,结果放次高四位,依次类推;为什么这样处理  

  11. //  就是让数据更”乱“更“随机”,甚至还可以不同循环里的采样率也不同  

  12. //  *******************************************************  

  13. //  本人遵循技术开放、广交天下朋友的原则,该程序可由任何人  

  14. //  修改使用。如有大虾修改了更为完善的该软件,请发送一份给本  

  15. //  人。谢谢!  

  16. //*********************************************************  

  17. #include "msp430x44x.h"  

  18.  

  19. unsigned char times=0;  

  20. unsigned char cyc;  

  21. unsigned int randomNUM;  

  22. unsigned int OneNums,temp;  

  23.  

  24. void main( void )  

  25. {  

  26.   // Stop watchdog timer to prevent time out reset  

  27. WDTCTL = WDTPW + WDTHOLD;  

  28. unsigned int i;  

  29.  

  30. P6DIR = 0;  

  31. P6SEL = 0x01;  

  32.  

  33. ADC12CTL0 &= ~ENC;  

  34. ADC12CTL0  = ADC12ON+SHT0_6+REFON+MSC;  

  35. ADC12CTL1 |= ADC12SSEL0 + SHP+CONSEQ_2;  

  36. ADC12MCTL0 = INCH_0+SREF_1;                  //通道0  

  37. for(i=0;i<7000;i++)  

  38. {;}                                          

  39. ADC12IE |= 0x01;                               

  40. ADC12CTL0 |= ENC;  

  41. _EINT();  

  42. ADC12CTL0 |= ADC12SC;  

  43. while(1)  

  44.   {  

  45.     LPM3;  

  46.     if(cyc==1)//第1次循环  

  47.     {  

  48.       randomNUM = OneNums<<12;  

  49.       temp=OneNums;  

  50.       OneNums = 0;  

  51.       continue;  

  52.     }  

  53.     if(cyc==2)//第2次循环  

  54.     {  

  55.        randomNUM |= (OneNums^temp)<<8;  

  56.        temp=OneNums;  

  57.        OneNums = 0;  

  58.        continue;  

  59.     }  

  60.     if(cyc==3)//第3次循环  

  61.       {  

  62.        randomNUM |= (OneNums^temp)<<4;  

  63.        temp=OneNums;  

  64.        OneNums = 0;    

  65.        continue;  

  66.       }  

  67.     if(cyc==4)//第4次循环  

  68.       {  

  69.        randomNUM |= OneNums^temp;  

  70.        temp=0;  

  71.        OneNums = 0;  

  72.        cyc=0;  

  73.      }  

  74. //randomNUM即为产生的16位随机数,以下程序用户自行添加  

  75.     _NOP();  

  76.   }//while  

  77. }  

  78.  

  79. #pragma vector=ADC_VECTOR  

  80. __interrupt void ADC12chanle(void)  

  81. {  

  82.    

  83.   unsigned int pp=0;  

  84.      

  85.   if (times<16)  

  86.   {  

  87.     pp = ADC12MEM0 ;  

  88.     times++;  

  89.     //if(ADC12MEM0 & 0x01)不就oK了?为什么还要弄个局部变量pp?  

  90.     if(pp & 0x01)  

  91.     {  

  92.       OneNums++;  

  93.     }  

  94.   }  

  95.   else  

  96.   {//一次循环,16次采样结束  

  97.     cyc++;  

  98.     times=0;  

  99.     LPM3_EXIT;  

  100.   }  

  101. }  


推荐阅读

史海拾趣

FIDELIX公司的发展小趣事

在东芯半导体的支持下,FIDELIX开始将其一部分技术团队迁移到国内,加速了存储芯片的国产替代进程。这些技术团队的加入,不仅提升了国内半导体产业的技术水平,也促进了FIDELIX与国内企业的深度融合和协同发展。

ACP Optoelectronic Technology Co Ltd公司的发展小趣事

在国内市场取得一定成绩后,ACP Optoelectronic Technology Co Ltd开始积极拓展国际市场。公司积极参加国际电子展会和技术交流活动,与海外企业建立合作关系,拓展销售渠道。经过几年的努力,ACP Optoelectronic Technology Co Ltd的产品已经成功打入多个国际市场,公司也逐渐发展成为一家具有国际影响力的光电企业。

Axiohm公司的发展小趣事

随着国内市场的饱和,Axiohm公司开始寻求国际化发展。公司制定了详细的国际化战略,先后在亚洲、欧洲和北美设立了分支机构和研发中心。通过与当地企业的合作,Axiohm成功打入多个国际市场,并根据不同地区的需求进行产品定制。这一战略不仅拓宽了公司的销售渠道,还提升了品牌知名度。

Diotec Electronics Corp公司的发展小趣事

面对全球化的市场趋势,Diotec开始实施全球化战略。公司加强与国际市场的联系,积极开拓海外市场。同时,Diotec还加强与全球合作伙伴的合作,共同推动电子行业的发展。展望未来,Diotec将继续坚持技术创新和品质至上的理念,致力于成为全球领先的电子元器件供应商。同时,公司还将关注新兴市场和技术趋势,为未来的发展做好充分准备。

高创科技(gotrend)公司的发展小趣事

随着产品的不断成熟和市场的认可,Diotec开始积极拓展国内外市场。公司加强与国际知名电子企业的合作,不断提升产品的品质和技术水平。同时,Diotec还注重品牌建设,通过一系列的市场推广活动,提高了品牌的知名度和美誉度。这些努力使Diotec的产品在电子行业中占据了重要的地位,成为众多客户的首选供应商。

D3 Semiconductor公司的发展小趣事

为了更好地拓展市场,D3 Semiconductor与全球知名的电子元件分销商贸泽电子(Mouser Electronics)建立了合作伙伴关系。根据协议,贸泽电子储备了D3 Semiconductor的完整650伏额定电压超结MOSFET产品线,并将其推向全球市场。这一合作不仅加强了D3 Semiconductor在全球市场的竞争力,也为公司带来了更多的商业机会。

问答坊 | AI 解惑

Wince RAS拨号属性的设置

在Wince里创建了cmnet进行GPRS拨号连接,但是连接属性里的拨号地点默认是“单位”,这样会导致拨号码前多了一个“9”,变成“9,*99***1#”,拨号连接不成功。必须手动将拨号地点改为“住宅”才行。 请问大家,如何设置能够使拨号地点默认为“住宅 ...…

查看全部问答>

PB中关于环境变量设置的问题

{5D8C1CC7-BB94-4A0D-9942-DC6888556665}…

查看全部问答>

lstAdd的使用问题!

    SESSION_POS_S *pTestpos1, *pTestpos2, *pTestpos3, *pPos;     LIST *pMyList = NULL;     int NodeIndex = 0;             DPRINT(\"-------- lstAdd测试 -------\\n\" ...…

查看全部问答>

如何从零开始?

某天在某公司,看见他们在开发一个无线GPS的定位设备,没有外壳,只有一个电池,一个主板,一个显示屏,主板上还用接线连接了几个芯片,里面是自己开发的系统,可以接收GPS信号,并定位在地图上。 我是搞软件开发的,对这个很感兴趣。想研究一下。 ...…

查看全部问答>

高手解惑,关于 镜像 bib 内存映射 bootloader 的问题

我现在用 TI 的 OMAPV1030 遇到一个不解的问题 这个芯片物理地址是这样的: 0x0000 0000 - 0x0000 5FFF 24K ROM code ... 0x0C00 0000 - 0x0FFF FFFF 64M nand flash ... 0x1000 0000 - 0x13FF FFFF 64M 外部 RAM ... 0x2000 0000 - 0x200 ...…

查看全部问答>

愤怒了搞ARM了

看了看买来的开发板,不晓得能做些啥子有意义的东西来玩,感觉自己如果堕落会浪费很多的时间,最近几天一直在想自己以后该怎么办,今天拿出买来很久的ARM开发板有一种冲动的感觉,TMD应届生就比你们所谓的有经验的差。。。希望热心的网友能够例举些 ...…

查看全部问答>

特权同学写的sdram控制器读出的数据全是FF?

最近在用特权同学写的sdram控制器,但是串口读出的数据全是FF,不知道出错在什么地方?用没用过调通的朋友,不吝赐教,万分感谢啊…

查看全部问答>

CN0163_【10款典型实验室电路推荐】之四

10款典型实验室电路推荐之四:ADXRS450 是一款数字输出陀螺仪,主要用于医疗、工业、仪器仪表、稳定和其它高性能应用。这款陀螺仪具有极佳的抗冲击和振动能力,适合恶劣环境下的应用。 …

查看全部问答>