首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

用I2C通讯实现点亮一盏小灯(包含应答)-汇编语言

2012-09-10 
用I2C通信实现点亮一盏小灯(包含应答)---汇编语言下载请于:http://download.csdn.net/detail/chenqiai0/44

用I2C通信实现点亮一盏小灯(包含应答)---汇编语言

下载请于:http://download.csdn.net/detail/chenqiai0/4483389(完全代码以及详解)-------有疑问可以留言,希望多多交流

org 0x00ljmp startorg 30Hstart:    lcall init_I2Clcall init_ledmain:  mov R3,#0x23  mov R5,#0x05  lcall write_add  //这一句和 lcall read_add需要从stop-》start,所以有一个延时,这个延时时间经过自己计算至少1.5ms  mov 0x72,#77  //小于77会发生错误  j:    lcall delay   //14周期    djnz 0x72,j  //3个周期  lcall read_add  mov A,R4  xrl A,#0xFF  mov P0,Ah:  ljmp hdelay:  mov R0,#5   //2个周期  here:       djnz R0,here  //djnz 寄存器减1,不为零就转移3个周期retI2C_start:   clr    P3.7//scl   lcall  delay   setb   P3.6   lcall  delay   setb   P3.7   lcall  delay   clr    P3.6   lcall  delayretI2C_stop:   clr    P3.7//scl   lcall  delay   clr    P3.6   lcall  delay   setb   P3.7   lcall  delay   setb   P3.6   lcall  delayretI2C_respons:   mov R0,#0x00   setb P3.7   lcall  delay   there:         jnb P3.6,q inc R0 cjne R0,#250,there     q:   clr P3.7   lcall delayretwrite_byte:  //void write_byte(uchar date),从C语言看,这个函数需要一个参数             //我们不妨令R5=date   (R6=i,A=temp)  mov A,R5  mov R6,#0x09 w_circle: djnz R6,next  ljmp q1  next:rlc Aclr P3.7lcall delaymov P3.6,Clcall delaysetb P3.7lcall delayljmp w_circle  q1:    clr P3.7lcall delaysetb P3.6lcall delayretread_byte:   //A=k,R6=i   clr P3.7   lcall delay   setb P3.6   lcall delay   mov R6,#0x09   mov A,#0x00  r_circle:    djnz R6,next2    ljmp q2    next2:    setb P3.7    lcall delay    rl A    jb  P3.6,orl1 orl A,#0 ljmp orl2    orl1:     orl A,#1       orl2:    mov R4,Aclr P3.7lcall delayljmp r_circle  q2:    clr P3.7lcall delaysetb P3.6lcall delaysetb P3.7lcall delayretwrite_add:   mov 0x70,R5//把原数据保存起来   lcall I2C_start   mov R5,#0xa0   lcall write_byte   lcall  I2C_respons   mov 0x71,R3   mov R5,0x71   lcall write_byte   lcall  I2C_respons   mov R5,0x70   lcall write_byte   lcall  I2C_respons   lcall I2C_stopretread_add:   lcall I2C_start   mov R5,#0xa0   lcall write_byte   lcall  I2C_respons   mov 0x71,R3   mov R5,0x71   lcall write_byte   lcall  I2C_respons    lcall I2C_start   mov R5,#0xa1   lcall write_byte   lcall  I2C_respons   lcall read_byteretinit_I2C:  setb P3.6  lcall delay  setb P3.7  lcall delayret//选中小灯init_led:   clr  P1.0   setb P1.1   setb P1.2   clr  P1.4   setb P1.3retend


 

 

1楼chenqiai0昨天 23:06
欢迎交流

热点排行