虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

nop

  • 〖说明〗24LC65 I2C EEPROM字节读写驱动程序

    〖说明〗24LC65 I2C EEPROM字节读写驱动程序,芯片A0-A1-A2要接VCC。 现缺页写、页读,和CRC校验程序。以下程序经过50台验证,批量的效果有待考 察。 为了安全起见,程序中很多nop是冗余的,希望读者能进一步精简,但必须经过验 证。

    标签: EEPROM I2C 24 LC

    上传时间: 2016-01-24

    上传用户:lixinxiang

  • 123456uyygbb温度传感器ds1820 的汇编程序     晶振:12M TEMPER_L EQU 36H TEMPER_H EQU 35H TEMPER_NUM EQU 60H

    123456uyygbb温度传感器ds1820 的汇编程序     晶振:12M TEMPER_L EQU 36H TEMPER_H EQU 35H TEMPER_NUM EQU 60H FLAG1 BIT 00H DQ BIT P3.3 AAA:MOV SP,#70H LCALL GET_TEMPER LCALL TEMPER_COV LJMP AAA nop ------------------读出转换后的温度值 GET_TEMPER: SETB DQ 定时入口 BCD:LCALL INIT_1820 JB FLAG1,S22 LJMP BCD 若DS18B20不存在则返回 S22:LCALL DELAY1 MOV A,#0CCH 跳过ROM匹配------0CC LCALL WRITE_1820 MOV A,#44H 发出温度转换命令 LCALL WRITE_1820

    标签: EQU TEMPER_NUM TEMPER_L TEMPER_H

    上传时间: 2013-12-26

    上传用户:ainimao

  • RISC状态机由三个功能单元构成:处理器、控制器和存储器。 RISC状态机经优化可实现高效的流水线操作。 RISC 中的数据线为16位。 在数据存储器中的0到15的位置放置16个随机数

    RISC状态机由三个功能单元构成:处理器、控制器和存储器。 RISC状态机经优化可实现高效的流水线操作。 RISC 中的数据线为16位。 在数据存储器中的0到15的位置放置16个随机数,求16个数的和,放在数据存储器的16、17的位置,高位在前 对这16个数进行排序,从大到小放置在18到33的位置 求出前16个数的平均数,放在34的位置 基本指令有nop, ADD, SUB, AND, RD, WR, BR,BC。 因为采用16位指令,有扩充的余地。

    标签: RISC 状态 处理器 控制器

    上传时间: 2013-11-29

    上传用户:缥缈

  • 本模拟I2C软件包包含了I2C操作的底层子程序

    本模拟I2C软件包包含了I2C操作的底层子程序,使用前要定义 好SCL和SDA。在标准8051模式(12 Clock)下,对主频要求是不高于12MHz(即1个 机器周期1us) 若Fosc>12MHz则要增加相应的nop指令数。(总线时序符合I2C标 准模式,100Kbit/S)。

    标签: I2C 模拟 操作 底层

    上传时间: 2013-12-08

    上传用户:ruixue198909

  • unsigned char WriteInData(unsigned char Address,unsigned char DataByte) { unsigned char mark WREN

    unsigned char WriteInData(unsigned char Address,unsigned char DataByte) { unsigned char mark WREN() Write_Byte(0x02) Write_Byte(Address) Write_Byte(DataByte) //nop() X25_cs=1 lag(3000) mark=Read_Byte(Address) if(DataByte==mark) SystemError=0 if(mark!=DataByte) SystemError=1 // return(SystemError) } //虽然是一读一写,但是其中暗藏杀机,让人很难调通。一定注意接口的位置!呵呵!不信你就按普通的SPI程序方法写写试试!

    标签: unsigned char WriteInData DataByte

    上传时间: 2016-12-14

    上传用户:invtnewer

  • 虚拟I2C总线汇编程序软件包 I2C 软件包的底层子程序

    虚拟I2C总线汇编程序软件包 I2C 软件包的底层子程序,使用前要定义好SCL和SDA。在标准80C51模式(12 Clock)下,对主频要求是不高于12MHz(1个机器周期1us)若Fosc>12MHz,则要增加相应的nop指令数。在使用本软件包时,请在你的程序的未尾加入$INCLUDE (VI2C_ASM.ASM)即可。

    标签: I2C 软件包 虚拟 总线

    上传时间: 2014-12-01

    上传用户:yimoney

  • MCS-51单片机模拟I2C软件包本模拟I2C软件包包含了I2C操作的底层子程序

    MCS-51单片机模拟I2C软件包本模拟I2C软件包包含了I2C操作的底层子程序,使用前要定义 好SCL和SDA。在标准8051模式(12 Clock)下,对主频要求是不高于12MHz(即1个 机器周期1us) 若Fosc>12MHz则要增加相应的nop指令数。(总线时序符合I2C标 准模式,100Kbit/S)

    标签: I2C MCS 模拟 软件包

    上传时间: 2014-11-04

    上传用户:wang5829

  • 程序所在目录:ex6_AD 板上引出的两路A/D 转换对应DSP 的A/D 模块分别是通道0 和通道8

    程序所在目录:ex6_AD 板上引出的两路A/D 转换对应DSP 的A/D 模块分别是通道0 和通道8,输入电压0-5V 。 本开发板使用DA 的输出作为AD 的输入,因此需将5J2 的1-2,3-4 分别用短路子短接。 打开CC2000,进行如下操作: 1.Project->Open ,打开该目录中的工程文件。 2.Project->Rebuild ALL,编译链接 3.File->Load Program 4.光标移到Que()函数的asm(" nop ")所处的行。 5. Debug->Toggle breakpoint (快捷键F9) 6. Debug->Animate (快捷键F12) 7. View->Watch Window ,在出现的watch 窗体中点右键分别插入变量AD_SIG0,AD_SIG8,则可看到所采到的这两路信号的电压值。 如果结果稍微不精确,请不要在意,这可能是因为没有采用专用基准源,以及信号不稳定的缘故。另外,TMS320LF2407 的内置A/D 的精度并不是很高。在前面两种情况已得到保证的情况下,变化幅度仍较大。( ^_^ 呵呵,外面好一点的一片A/D 芯片就不低于100 块,所以想想能凑合着用也就可以了。)

    标签: DSP ex AD 程序

    上传时间: 2013-12-17

    上传用户:refent

  • AVR单片机转速表

    /****************************************************************                  外部晶振8M                  PA0~3:四位数码管的位选                  PB0~7:数码管的8位段选                  外部中断0用于计数                  定时器0溢出中断的定时为1ms                  说明 :检测到水流较小时,继电器延时1秒关闭  ******************************************************************/                #include<iom16v.h>   #include<macros.h>   #define uchar unsigned char   #define uint unsigned int       char led_7[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};  //数码管段选        char position[4]={0xfe,0xfd,0xfb,0xf7};//数码管位选        uint sumnum=0;  //用于记录1000ms内进入中断的次数        uint time=0;   //记录进入比较定时器0的次数        uint num=0;     //记录1ms内进入中断的次数        uint count=0;   //进入外部中断0的次数        uchar flag;        uint sumnum1;   //记录100ms内的数目       /***************************函数声明***************************/        void delay();        void display(uint m );        void init();        void init_0();        void init_2();    void _delay_us(uint l)   {        unsigned int i;        for(i=0;i<l;i++)        {        asm("nop");        }   }           /**************************主函数***********************************/       void main()   {        init();        init_0();        init_2();        while(sumnum<5)        {           PORTD=0XBF;           segdisplay(sumnum1);        }       while(1)       {           segdisplay(sumnum1);       }           }        /*************************扫描数码管时的延时函数*********************/        void delay()    {         uchar i,j;         for(i=6;i>0;i--)         for(j=225;j>0;j--);    }        /************************数码管显示函数*****************************/       void segdisplay( int temp)        {         int seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};         int temp1,temp2,temp3,temp4;         temp1=temp/1000;         temp2=(temp/100)%10;         temp3=(temp/10)%10;         temp4=temp%10;         DDRB=0xff;         DDRA|=0x0f;           PORTA=~BIT(3);           PORTB=seg[temp1];           _delay_us(100);           PORTA=~BIT(2);           PORTB=seg[temp2];           _delay_us(100);           PORTA=~BIT(1);           PORTB=seg[temp3];           _delay_us(100);           PORTA=~BIT(0);           PORTB=seg[temp4];           _delay_us(100);       }        /***********************管脚初始化函数*********************/        void init()    {                      DDRD|=0X40;   //PD4 设置为输出             PORTD=0XBF;                DDRA=0XFF;             DDRB=0XFF;             PORTA=0XFF;             PORTB=0XFF;    }        /***********************外部中断0初始化*********************/        void init_0()    {         MCUCR=0X02;   //INT0为下降沿触发         GICR=0X40;   //使能INT0中断         SREG=0X80;  //使能总中断    }        /**********************定时器2初始化***********************/        void init_2()    {         TCCR0=0x03;   // 内部时钟,64 分频(8M/64=125KHz)          TCNT0=0x83;   //装初值           TIMSK=0x01;   // 允许 T/C0溢出中断中断      }          /***********************外部中断0子函数********************/        #pragma interrupt_handler int0_isr:2        void int0_isr(void)        {             count++;        }        /*********************定时计数器0溢出中断子函数*****************/       #pragma interrupt_handler int0_over:10        void int0_over(void)       {           TCNT0=0x83;   //重装初值            if((time%100) == 0)               sumnum1 = num;           if(time == 1000)           {               sumnum=num;               if(sumnum<10)               {                                      if((flag==1)&&(sumnum<10))                   {                       PORTD=0XFF;                       flag=0;                   }                                      flag++;               }               else                       PORTD=0XBF;               num=0;               time=0;           }           num+=count;           count=0;           ++time;        } 

    标签: C语言

    上传时间: 2016-03-09

    上传用户:彦 yan