基于PIC单片机从24C02中读取数据到数码管显示的设计.doc

上传人:白大夫 文档编号:3411523 上传时间:2019-08-22 格式:DOC 页数:7 大小:31.50KB
返回 下载 相关 举报
基于PIC单片机从24C02中读取数据到数码管显示的设计.doc_第1页
第1页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《基于PIC单片机从24C02中读取数据到数码管显示的设计.doc》由会员分享,可在线阅读,更多相关《基于PIC单片机从24C02中读取数据到数码管显示的设计.doc(7页珍藏版)》请在三一文库上搜索。

1、基于PIC单片机从24C02中读取数据到数码管显示的设计该试验功能是单片机复位一次,自动从24C02中读取数据到数码管显示,然后对值加1再写入24C02,最终数码管中的数据就是开机的次数,具有一定的实用意义;本电路所使用24C02为ATMEL的,或不是该厂的,则烧写时间可能会有差异;必须调整本程序的DELAY时间;本实战的目的是让大家进上步熟悉I2C通信的时序,熟悉24CXX的读写,会用软件模拟I2C通信;硬件接法:;1.24CXX的SDA接877A的RB5口,SCLK接877A的RB4口,WP接地,A0,A1,A2接地;2.实验本实验须将MCD-DEMO实验板上的93CXX系列芯片先取下,在

2、实验过程中不要按动同样接在RB口的按键,以免影响通信时序。;3.实验板上拔码开关S4,S5要置ON,其它拔码开关都可以关闭。;程序清单如下:;*LIST P=16F877A, R=DECinclude ”P16F877A.inc“;*_CONFIG _DEBUG_OFF;* 定义查表偏移量#define SDA PORTB,5#define SCLK PORTB,4;*COUNT EQU 20HADDR EQU 21HDAT EQU 23HTEMP EQU 24H;*ORG 000HNOP ;放置一条ICD必需的空操作指令GOTO MAINORG 004HRETURNORG 0008H;*TA

3、BLEADDWF PCL,1 ;地址偏移量加当前PC值RETLW 0C0H ;0RETLW 0F9H ;1RETLW 0A4H ;2RETLW 0B0H ;3RETLW 99H ;4RETLW 92H ;5RETLW 82H ;6RETLW 0F8H ;7RETLW 80H ;8RETLW 98H ;9RETLW 00H ;ARETLW 00H ;BRETLW 00H ;CRETLW 00H ;DRETLW 00H ;ERETLW 00H ;F;*MAINMOVLW 0FFHMOVWF PORTC ;数码管先全部熄灭MOVLW 0FFHMOVWF PORTAMOVLW 0FFHMOVWF PO

4、RTB ;SDT,SCLK都为高BSF STATUS,RP0 ;定义RA口,RC,RB口全部为输出MOVLW 07HMOVWF ADCON1 ;设置RA口全部为普通数字IO口CLRWMOVWF TRISB ;MOVWF TRISAMOVWF TRISCMOVWF OPTION_REG ;开启RB口内部弱上拉BCF STATUS,RP0CLRW ;地址00HCALL RD24 ;读地址MOVWF DAT ;读出的值送F1SUBLW .9 ;若读出的值大于9,则F1送为0,从0开始(因为1位数码管只能显示到0-9)BC TT2 ;C=0就转TT2TT1CLRF DATTT2MOVFW DATCAL

5、L TABLE ;取显示段码MOVWF PORTC ;段码送C口BCF PORTA ,1 ;点亮第一位数码管INCF DAT ,1 ;每次上电,存入24CXX的00H地址的值加1CLRW ;地址00HCALL WT24 ;写24CXXGOTO $;*RD24MOVWF ADDR ;地址暂存于F4中CALL START24 ;启动I2CMOVLW 0A0HCALL SUBS ;写器件地址1010000+最后一位0写操作MOVFW ADDR ;载入地址CALL SUBS ;写地址CALL START24 ;再发开始信号MOVLW 0A1H ;写器件地址1010000+最后一位1读操作CALL SU

6、BSBSF STATUS ,RP0BSF TRISB ,5 ;设SDA脚为输入,准备读BCF STATUS ,RP0MOVLW 08H ;共读8位数据MOVWF COUNTRD000NOPNOPNOPBSF SCLK ;读数据NOPBSF STATUS,CBTFSS SDABCF STATUS,CRLF TEMP ,1BCF SCLKDECFSZ COUNT ,1 ;循环读完8位GOTO RD000BSF STATUS ,RP0BCF TRISB ,5 ;恢复SDA脚为输出BCF STATUS ,RP0BSF SDACALL DELAY2BSF SCLKCALL DELAY2BCF SCLK

7、;应答毕,SDA置1CALL STOP ;送停止信号MOVFW TEMP ;将读的数据送入W中RETURN;*写入24C02程序WT24 MOVWF ADDR ; 先将地址暂存于F4CALL START24 ;开始条件MOVLW 0A0HCALL SUBS ;写器件地址1010000+最后一位0写操作MOVFW ADDR ;载入地址CALL SUBS ;写地址MOVFW DAT ;载入数据CALL SUBS ;写数据CALL STOP ;停止信号RETURNSTART24;开始条件BSF SDABSF SCLKCALL DELAY2BCF SDACALL DELAY2BCF SCLKRETUR

8、NSTOPBCF SDA ;停止条件NOPNOPBSF SCLKCALL DELAY2BSF SDARETURNSUBS ;写数据MOVWF TEMP ;将要写的数据存于F2中MOVLW 08HMOVWF COUNT ;写8位数据SH01RLF TEMP ,1BSF SDABTFSS STATUS ,CBCF SDANOPBSF SCLKCALL DELAY2BCF SCLKDECFSZ COUNT ,1 ;循环写完8位GOTO SH01BSF SDANOPNOPBSF SCLKBSF STATUS,RP0BSF TRISB ,5BCF STATUS,RP0REPBTFSC SDA ;判应答到否,未到则等待GOTO REPBCF SCLKBSF STATUS,RP0BCF TRISB ,5BCF STATUS,RP0RETURNDELAY2NOPNOPNOPNOPRETURN;*end ;源程序结束;*

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1