我使用PIC16F886的PIC模拟器IDE,每次运行代码时,随机值总是等于0。它看起来像 rand()
是不工作。我不明白发生了什么。
下面是代码。
#include <16F886.h>
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#FUSES NOWDT
#FUSES PUT
#FUSES NOMCLR
#FUSES NOPROTECT
#FUSES NOCPD
#FUSES BROWNOUT
#FUSES IESO
#FUSES FCMEN
#FUSES NOLVP
#FUSES NODEBUG
#FUSES NOWRT
#FUSES BORV40
#FUSES RESERVED
#FUSES INTRC_IO
#use delay(clock=8M)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
void main()
{
int myInput;
int random;
random = rand() % 5;
printf("type a character\r\n");
printf(" %d ", random);
while(1) {
myInput = getc();
printf("You typed - %d\r\n", myInput);
if(myInput>random){
printf("too high\n");
}
else if(myInput<random) {
printf("too low");
}
}
}
你必须初始化 rand()
呼之即来 srand()
函数。有一个非常好的例子,在 XC8用户指南 第399页。
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
void main (void){
time_t toc;
int i;
time(&toc);
srand((int)toc);
for(i = 0 ; i != 10 ; i++)
printf("%d\t", rand());
putchar(’\n’);
}