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

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

点击数:7915 次   录入时间:03-04 11:40:08   整理:http://www.55dianzi.com   AVR单片机
用AVR 单片机 8位数据产生随机数 

        源程序:SLAVR737.ASM
      用AVR 单片机 8位数据产生随机数,由PORTA 口及PORTC 口输出随机数,在8X8 
      LED上显示,硬件接线电路见“7.3.8按钮猜数”。随机数的种子由程序设定(也可外接开关设定),启动种子后,由移位寄存器以互斥的异或逻辑组合返回循环产生。
      .include"8515def.inc"
          rjmp    RESET    
      .def    temp    =r16        ;暂存器
      .def    temp1    =r17        ;暂存器1
      .def    udata    =r21        ;存随机数送A口
      .def    ddata    =r22        ;存随机数送C口
      .cseg
      .org    0x10
      RESET:    ldi    temp,high(RAMEND);设堆栈指针
          out    SPH,temp             
          ldi    temp,low(RAMEND)     
          out    SPL,temp
            
              ldi     temp,0xff        ;设A口、C口为输出
              out     ddra,temp        ;送方向寄存器A
              out     ddrc,temp        ;送方向寄存器C
      start:  wdr                        ;关看门狗
              ldi     udata,0x6a        ; 设置随机数初值
              ldi     ddata,0x3c        ; 
      startp: out     porta,udata        ;输出到A口
              out     portc,ddata        ;输出到C口
              ldi     temp,0x80        ;设延时常数
              rcall   delay            ;调用延时子程序
              rcall   randm            ;调用十六位随机数子程序
              rjmp    startp  
      delay:                    ; 通用延时子程序    从略
      ....
      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

      randm:                            ;产生十六位随机数子程序
          MOV    temp,udata        ;产生A口随机数
                 MOV    temp1,udata        ; 
                rol   temp                ;通过进位位左循环移位
                eor   temp1,temp        ;异或
                rol   temp            ; 通过进位位左循环移位
                rol   temp            ; 通过进位位左循环移位
                eor   temp1,temp    ;异或
                 MOV    temp,ddata    ; 产生C口随机数
                swap  temp            ; 通过进位位左循环移位

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


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