为什么在PIC仿真器IDE中不给rand()没有随机值?

问题描述 投票:-1回答:1

我使用PIC和PIC16F886的模拟器IDE,每次运行代码时,random始终等于0。似乎rand()无法正常工作。我不明白发生了什么。

这里是代码

#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");
     }
   }
}


c microcontroller pic
1个回答
2
投票

您必须通过调用rand()函数来初始化srand()的起点。在第399页的xc8 user guide 中有一个非常好的示例。

#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’);
}
© www.soinside.com 2019 - 2024. All rights reserved.