//*****************************************************************************
// MSP430-随机数的产生
// 作者:B哥
// Email: cbing2000@163.com
// May 2008
// Built with IAR Embedded Workbench Version: 3.42A
// 程序功能:产生一个16位的随机数
// 原理:
// AD输入口处于悬浮状态,这样输入的是一个不确定的数字
// 转换结果的最后一位尤是如此,转换16次(也可以不是16次,
// 但最大只能是16次,为什么?)后,这16次里有X次转换结果
// 的LSB是1,则把x放在randomNUM的最高四位,第2次循环得出的
// x与第1次的异或,结果放次高四位,依次类推;为什么这样处理
// 就是让数据更”乱“更“随机”,甚至还可以不同循环里的采样率也不同
// *******************************************************
// 本人遵循技术开放、广交天下朋友的原则,该程序可由任何人
// 修改使用。如有大虾修改了更为完善的该软件,请发送一份给本
// 人。谢谢!
//*********************************************************
#include "msp430x44x.h"
unsigned char times=0;
unsigned char cyc;
unsigned int randomNUM;
unsigned int OneNums,temp;
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
unsigned int i;
P6DIR = 0;
P6SEL = 0x01;
ADC12CTL0 &= ~ENC;
ADC12CTL0 = ADC12ON+SHT0_6+REFON+MSC;
ADC12CTL1 |= ADC12SSEL0 + SHP+CONSEQ_2;
ADC12MCTL0 = INCH_0+SREF_1; //通道0
for(i=0;i<7000;i++)
{;}
ADC12IE |= 0x01;
ADC12CTL0 |= ENC;
_EINT();
ADC12CTL0 |= ADC12SC;
while(1)
{
LPM3;
if(cyc==1)//第1次循环
{
randomNUM = OneNums<<12;
temp=OneNums;
OneNums = 0;
continue;
}
if(cyc==2)//第2次循环
{
randomNUM |= (OneNums^temp)<<8;
temp=OneNums;
OneNums = 0;
continue;
}
if(cyc==3)//第3次循环
{
randomNUM |= (OneNums^temp)<<4;
temp=OneNums;
OneNums = 0;
continue;
}
if(cyc==4)//第4次循环
{
randomNUM |= OneNums^temp;
temp=0;
OneNums = 0;
cyc=0;
}
//randomNUM即为产生的16位随机数,以下程序用户自行添加
_NOP();
}//while
}
#pragma vector=ADC_VECTOR
__interrupt void ADC12chanle(void)
{
unsigned int pp=0;
if (times<16)
{
pp = ADC12MEM0 ;
times++;
//if(ADC12MEM0 & 0x01)不就oK了?为什么还要弄个局部变量pp?
if(pp & 0x01)
{
OneNums++;
}
}
else
{//一次循环,16次采样结束
cyc++;
times=0;
LPM3_EXIT;
}
}
上一篇:MSP430升级程序
下一篇:MSP430常见问题解答
推荐阅读最新更新时间:2024-03-16 16:01
设计资源 培训 开发板 精华推荐
- PC产业驶入创新超车道,英特尔蓉城撬动AI新引擎
- 与产业聚力共赢,英特尔举行新质生产力技术生态大会
- “新”享5G-A万兆网络前沿体验 高通携手产业伙伴亮相第二届链博会
- 英飞凌推出符合ASIL-D标准的新型汽车制动系统和电动助力转向系统三相栅极驱动器 IC
- 南芯科技推出80V升降压转换器,持续深耕工业储能市场
- 法雷奥与罗姆联合开发新一代功率电子领域
- 贸泽电子开售能为电动汽车牵引逆变器提供可扩展性能的 英飞凌HybridPACK Drive G2模块
- 德州仪器新型 MCU 可实现边缘 AI 和先进的实时控制, 提高系统效率、安全性和可持续性
- 瑞萨推出高性能四核应用处理器, 增强工业以太网与多轴电机控制解决方案阵容
- 研华全新模块化电脑SOM-6833助力5G路测设备升级
- 已结束|TI 直播【创新下一代汽车网关系统】
- 下载有礼:泰克全新 5 系列 MSO 混合信号示波器
- 炎炎盛夏,EEWORLD社区6月明星人物出炉喽!
- 乐享MPLAB Xpress云端IDE,开心答题赢礼品
- 直播已结束【Molex 新能源汽车低压连接器解决方案】
- 有奖直播|TI Sitara™ 产品在智能电网中的应用
- 【已结束】有奖直播【TI 全新CC2340无线 MCU,助力低功耗蓝牙应用】
- 免费送:英国Aim TTi 最新数字信号发生器和热销电流探头【社区重磅福利】
- 评论有礼|【Discovery 】走进TI毫米波雷达世界 快速获得设计技能
- 是德科技有奖直播:示波器在通用电子测量中的应用和技巧