您当前的位置:五五电子网电子知识单片机-工控设备AVR单片机AVR单片机8位数据产生随机数 正文
AVR单片机8位数据产生随机数

AVR单片机8位数据产生随机数

点击数:7915 次   录入时间:03-04 11:40:08   整理:http://www.55dianzi.com   AVR单片机
                eor   temp,temp1    ;异或通过进位位左循环移位
                rol   temp            ; 通过进位位左循环移位
                rol   ddata        ; 通过进位位左循环移位
                rol   udata        ; 通过进位位左循环移位
                ret                  ;子程序返回
      7.3.8    按钮猜数程序
      源程序:SLAVR738.ASM
      许多场合如按钮猜数(电脑摇奖,电脑选出幸运号),游戏开始按钮等待一个不规则且不定序的数据产生,即须要随机数发生器。随机数的种子由程序设定(也可外接开关设定),启动种子后,由移位寄存器以互斥的异或逻辑组合返回循环产生。产生随机数的原理图如下:
      16位移位产生随机数原理图
      8~16位移位寄存器产生随机数循环组合
      位 数    循环输入组合 S=2^n-1 Qn XOR Qm
         8    Q2 ⊕ Q3 ⊕ Q4 ⊕ Q8 (现程序按钮猜数采用8位数)
         9    Q5 ⊕ Q9
        10    Q7 ⊕ Q10
        11    Q9 ⊕ Q11
        12    Q2 ⊕ Q10 ⊕ Q11 ⊕ Q12
        13    Q1 ⊕ Q11 ⊕ Q12 ⊕ Q13
        14    Q2 ⊕ Q12 ⊕ Q13 ⊕ Q14
        15    Q14 ⊕ Q15
        16    Q4 ⊕ Q13 ⊕ Q15 ⊕ Q16


      以8X8 
      LED阵列,开机时为了避免被使用者预测出压按时间对应随机数的变化值,故LED字幕以广告动画画面显示,并令随机数随着变化使无法预测随机数起始值,广告动画面共有四张,每张有8位数据。见”org 
        dpfstb”;

      由按钮(PD1)按下,AVR用8位数据产生随机数,由PORTA 口及PORTC 口输出随机数,在8X8 LED上显示好玩的真实的按钮猜数。
      .include "8515def.inc"
      .def    peed    =r16
      .def    DSPn    =r17   ;存显示初始动画次数
      .def    temp2   =r18
      .def    temp1   =r19
      .def    temp    =r20
      .def    scndp   =r21 
      .def    cnt     =r22
      .def    rdata   =r23        ;存随机种子数
      .def    rdata9  =r24
      .equ    dpfstb  =0x01e0     ;大小矩形图表首址
      .equ    randtb  =0x0210     ;随机数种子表首址
      .equ    numbertb=0x0240     ;0-9数字表首址
      .org  $0000
          rjmp    RESET        ;Reset Handle
      .cseg
      .org $0010
      RESET:  ldi     peed,high(RAMEND)   ;设置堆栈$25F,见器件配置文件"8515def.inc"
              out     SPH,peed
              ldi     peed,low(RAMEND)
              out     SPL,peed
              ldi     peed,0xff    ;对口初始化, 
              out     ddra,peed    ;设A口为输出
              out     ddrc,peed    ;设C口为输出
              ldi     peed,0xfd    ;PD1作输入,且接内部上拉电阻
              out     ddrd,peed    ;PD1为输入,其余为输出
              ldi     peed,0xff    ;关D口
              out     portd,peed
              ldi     peed,0x13    ;显示画面次数
      start:  ldi     dspn,0x06    ;显示初始动画
              ldi     zh,high(dpfstb*2)  
              ldi     zl,low(dpfstb*2)  
      dspFM:  rcall   ldtb8        ;调用程序区数送到内存RAM
              ldi     temp2,0xa0    ;显示动画面次数
      dspfm1: rcall   sCAN1        ;调用从内存取数显示一次

上一页  [1] [2] [3] [4] [5]  下一页


本文关键字:单片机  AVR单片机单片机-工控设备 - AVR单片机