首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

如何在CW环境下产生随机数

或许可以先读一个随机数,再执行start08.c。
海纳百川  有容乃大
应该不是读RAM的问题。关键是读了RAM之后,如何保存这个数,再怎么去执行Start08.c?
海纳百川  有容乃大
你现在是怎么做的呢?
海纳百川  有容乃大
程序里延时一定时间再读取程序指针PC?芯片复位后PC就是固定的,再执行固定的延时程序后PC肯定还是一个确定的值,怎么会是随机的呢?
海纳百川  有容乃大
可以用以下指令:

asm {
BSR Get_PC_value ;Instruction 1
BRA Done ;Instruction 2
Get_PC_value:
LDHX 1,SP
RTS
Done: ;此时HX中的值即上面“Instruction 2”的PC值,也就是“Instruction 1”的PC值+2
}

海纳百川  有容乃大
可以定义两个字节的变量:

char Value_word_1,Value_word_2;

然后程序可以改为:

asm {
BSR Get_PC_value
BRA Done
Get_PC_value:
LDA 1,SP
STA Value_word_1
LDA 2,SP
STA Value_word_2
RTS
Done:
}
海纳百川  有容乃大
这个程序本身是不会跑飞的。是不是watchdog的问题,或堆栈溢出?最好将Value_word_1和Value_word_2定义为全局变量试试。
海纳百川  有容乃大
另外要注意,这段程序不是子程序或函数,不要去调用它,而是直接插入需要执行的地方即可。
海纳百川  有容乃大
返回列表