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

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

我使用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");
        }
    }
}
c microcontroller pic
1个回答
2
投票

你必须初始化 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’);
}
© www.soinside.com 2019 - 2024. All rights reserved.