首页 24C02-多花样流水灯演示程序(24C02 - multipattern water lamp demo program)

24C02-多花样流水灯演示程序(24C02 - multipattern water lamp demo program)

举报
开通vip

24C02-多花样流水灯演示程序(24C02 - multipattern water lamp demo program)24C02-多花样流水灯演示程序(24C02 - multipattern water lamp demo program) 24C02-多花样流水灯演示程序(24C02 - multipattern water lamp demo program) 24C02- multi pattern water lamp demonstration program (C51 ASM) 2007-03-02 15:16/*************************************************...

24C02-多花样流水灯演示程序(24C02 - multipattern water lamp demo program)
24C02-多花样流水灯演示程序(24C02 - multipattern water lamp demo program) 24C02-多花样流水灯演示程序(24C02 - multipattern water lamp demo program) 24C02- multi pattern water lamp demonstration program (C51 ASM) 2007-03-02 15:16/*******************************************************************/ / * ME300B microcontroller development system demo - multi flow pattern lamp LED / * * / / * will demonstrate the data is written first in 24C02 chip, then the data read out one by one to send the P0 port LED display. Author: gguoqing time: 2006/06/20 [Copyright] * Copyright (C) www.willar.com All Rights Reserved Wei nanoelectronic. / * [declare] this program is only used for learning and reference, please indicate the author and copyright information reference! /*******************************************************************/ #include #include #define uchar unsigned char #define uint unsigned int #define OP_WRITE 0xa0 / / device address and write operation #define OP_READ / / 0xa1 device address and read operations Uchar code display[72]={ 0xFE, 0xFD, 0xFB, 0xF7,0xEF, 0xDF, 0xBF, 0x7F, 0xBF, 0xDF, 0xEF, 0xF7,0xFB, 0xFD, 0xFE, 0xFF, 0xFE, 0xFC, 0xF8,0xF0,0xE0,0xC0,0x80,0x00, 0x80,0xC0,0xE0,0xF0,0xF8,0xFC, 0xFE, 0xFF, 0xFC, 0xF9,0xF3,0xE7,0xCF, 0x9F, 0x3F, 0x9F, 0xCF, 0xE7,0xF3,0xF9,0xFC, 0xFF, 0xE7,0xDB, 0xBD, 0x7E, 0xBD, 0xDB, 0xE7,0xFF, 0xE7,0xC3,0x81,0x00,0x81,0xC3,0xE7,0xFF, 0xAA, 0x55,0x18,0xFF, 0xF0,0x0F, 0x00,0xFF, 0x00,0xFF}; Sbit SDA = P3^4; Sbit SCL = P3^3; Void, start (); Void, stop (); Uchar, Shin (); Bit shout (uchar write_data); Void write_byte (uchar, addr, uchar, write_data); Void fill_byte (uchar, fill_size, uchar, fill_data); Void delayms (uint MS); Uchar, read_current (); Uchar read_random (uchar random_addr); #define (); {_nop_ (); _nop_ (); _nop_ (); _nop_ ();} delayNOP; /**********************************************************/ Main (void) { Uchar i; SDA = 1; SCL = 1; Fill_byte (72,0xff); / / the first 72 bytes filled 0xff For (I = 0; I < 72; / / i++) write code to the AT24C02 display { Write_byte (I, display[i]); } For (I =0; I <72; / / i++) from AT24C02 from the data to the P0 display { P0 = read_random (I); Delayms (350); } } /**********************************************************/ Void, start () / / start bit { SDA = 1; SCL = 1; DelayNOP (); SDA = 0; DelayNOP (); SCL = 0; } /********************************************************** / Void, stop () / / stop { SDA = 0; DelayNOP (); scl = 1; delaynop (); sda = 1; } / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / uchar shin () / / 从at24c02移出数据到mcu { uchar i, read _ data; for (i = 0; i < 8; i + +) { scl = 1; read _ data < < = 1; read _ data | = sda. scl = 0; } return (read _ data); } / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / bit word (uchar write _ data) / / 从mcu移出数据到at24c02 { uchar i; _ bit ack bit. for (i = 0; i < 8; i + +) / / 循环移入8个位 { sda = (bit) (write _ data & 0x80); _ nop _ (); scl = 1; delaynop (); scl = 0; write _ data < < = 1; } sda = 1; / / 读取应答 delaynop (); scl = 1; delaynop (); _ ack bit = sda. scl = 0; _ return ack bit; / / 返回at24c02应答位 } / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / void write _ byte (uchar addr, uchar write _ data) / / 在指定地址addr处写入数据write _ data { start (); shout (op _ write). shout (addr). shout (write _ data); stop (). delayms (10); / / 写入周期 } / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / void fill _ byte (uchar fill _ size, uchar fill _ data) / / 填充数据fill _ data到eeprom内fill _ size字节 { uchar i; for (i = 0; i < fill _ size; i + +) { write _ byte (i, fill _ data); } } / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / uchar read _ current () / / 在当前地址读取 { uchar read _ data; start (); shout (op _ read). read _ data = shin (); stop (). return read _ data; } / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / uchar read _ random (uchar random _ addr) / / 在指定地址读取 { start (); shout (op _ write). shout (random _ addr); return (read _ current ()); } / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / void delayms (uint ms) / / 延时子程序 { uchar k; while (ms) { for (k = 0; k < 120; k + +); } } / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / sda bit p3.4; 定义24c02数据线 scl bit p3.3; 定义24c02时钟线 -----------------------------------------------------; org 0000h ajmp main org 0030h -----------------------------------------------------; main: mov sp, # 60h mov p0, # 0ffh acall write _ data m _ loop. acall read _ data jmp m _ loop ; NOP NOP NOP Setb SCL; 启动一个时钟周期, 读总线 NOP NOP NOP NOP Mov C, SDA; 将sda状态读入c 结果移入a RLC. Setb SDA; 释放sda数据线 Djnz R7, R _ byte; 判断8位数据是否接收完全? Ret ----------------------------------------------------; 向iic总线发送一个字节数据; ; 入口参数: - - - 待发送数据存放在a中 ----------------------------------------------------; Sendbyte: Mov R7, # 08 S _ byte: The RLC Mov SDA, C Setb SCL NOP NOP NOP NOP The CLR SCL Djnz R7, s _ byte; 8位发送完毕? Ret -----------------------------------------------------; 等待应答信号; 等待从机返回一个响应信号; -----------------------------------------------------; Waitack: The CLR SCL Setb SDA; 释放sda信号线 NOP NOP Setb SCL NOP NOP NOP Mov C, SDA JC waitack; sda为低电平, 返回了响应信号 The CLR SDA The CLR SCL Ret ----------------------------------------------------; 启动信号子程序; ----------------------------------------------------; Start: Setb SDA Setb SCL NOP The CLR SDA NOP NOP NOP NOP The CLR SCL Ret ----------------------------------------------------; 停止信号子程序; ----------------------------------------------------; Stop: The CLR SDA NOP Setb SCL NOP NOP NOP NOP Setb SDA NOP NOP The CLR SCL The CLR SDA Ret ----------------------------------------------------; 延时5ms子程序; ; 输入参数: R4 - R4 * 5ms 输出参数: 无; ; 影响资源: R4, R5, r6等 ----------------------------------------------------; Delay _ 5ms. Mov R6, # 10 Of _ LP: Mov R5, # 250 Djnz R5, $ Djnz R6, _ LP Djnz R4, delay _ 5ms Ret ----------------------------------------------------; Tab: DB 0feh, 0fdh, 0fbh, 0f7h, 0efh, 0dfh, 0bfh, 07fh DB 0bfh, 0dfh, 0efh, 0f7h, 0fbh, 0fdh, 0feh, 0ffh DB 0feh, 0fch, 0f8h, 0f0h, 0e0h, 0c0h, 080h, 000h DB 080h, 0c0h, 0e0h, 0f0h, 0f8h, 0fch, 0feh, 0ffh DB 0fch, 0f9h, 0f3h, 0e7h, 0cfh, 09fh, 03fh DB 09fh, 0cfh, 0e7h, 0f3h, 0f9h, 0fch, 0ffh DB 0e7h, 0dbh, 0bdh, 07eh, 0bdh, 0dbh, 0e7h, 0ffh DB 0e7h, 0c3h, 081h, 000h, 081h, 0c3h, 0e7h,0ffh DB 0aah,055h,018h,0ffh,0f0h,00fh DB 000h,0ffh,000h,0ffh ;----------------------------------------------------- 结束
本文档为【24C02-多花样流水灯演示程序(24C02 - multipattern water lamp demo program)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_153723
暂无简介~
格式:doc
大小:33KB
软件:Word
页数:0
分类:理学
上传时间:2017-10-16
浏览量:33