版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
實(shí)驗(yàn)四萬年歷時(shí)鐘實(shí)驗(yàn)
一、實(shí)驗(yàn)?zāi)康?/p>
進(jìn)行一次實(shí)際開發(fā)的實(shí)驗(yàn),提高用戶實(shí)際開發(fā)能力。
二、實(shí)驗(yàn)設(shè)備及器件
IBMPC機(jī)一臺(tái)
DP-51PR0C單片機(jī)綜合仿真實(shí)驗(yàn)儀一臺(tái)
三、實(shí)驗(yàn)內(nèi)容
結(jié)合12c總線控制的實(shí)時(shí)時(shí)鐘、ZLG7290犍盤LED控制器進(jìn)行萬年歷時(shí)鐘的設(shè)
計(jì)。
四、實(shí)驗(yàn)要求
熟練掌握12c總線控制,靈活運(yùn)用12c主控器軟件包,深刻理解實(shí)時(shí)時(shí)鐘、
ZLG7290鍵盤LED控制的各種功能,并能把它們相結(jié)合,組成具有實(shí)際功能的
萬年歷時(shí)鐘。
五、實(shí)驗(yàn)步驟
1、用導(dǎo)線連接D5區(qū)的SCL、SDA至!JA2區(qū)的P16、P17,連接D5區(qū)的RST_L、
INT_KEYA2區(qū)的PIO、INTO,短接D5區(qū)JP1跳線。
2、用串口通信電纜連接TKSMonitor51仿真器的RS-232串行通信口,另一端連
接PC機(jī)的串行口,把TKSMonitor51仿真器上的開關(guān)撥到LOAD模式,即下載
狀態(tài)下,用戶應(yīng)將TKSMonitor51仿真器的仿真頭插入DP-51PROC單片機(jī)綜合
仿真實(shí)驗(yàn)儀的U13鎖緊座上;然后ISP跳線JP14跳開(即不短接),按下復(fù)位
按鍵“RESET"。此時(shí),DP-51PROC單片機(jī)綜合仿真實(shí)驗(yàn)儀即進(jìn)入下載狀態(tài)。對
DP-51PROC實(shí)驗(yàn)儀上電,然后,使用軟件DPFLASH把M0N51監(jiān)控程序下載
到TKSMonitor5仿真器。
3、關(guān)閉DPFLASH軟件。把TKSMonitor5仿真器的工作模式選擇開關(guān)切換到RUN
處,然后按一下復(fù)位鍵(RST),M0N51程序就開始運(yùn)行了。此時(shí),TKSMonitor5
仿真器進(jìn)入調(diào)試狀態(tài)。
4、新建工程文件和文件的編譯、鏈接
(一)新建工程文件
1)打開"keiluvision2”軟件,點(diǎn)擊工具欄Project選項(xiàng),在下拉菜單中選擇New
Project命令,彈出項(xiàng)目文件保存對話框,輸入項(xiàng)目名后,點(diǎn)擊保存按鈕。
2)在工程建立完畢以后,uVision會(huì)彈出器件選擇窗口,選擇相應(yīng)的器件型號(hào)。
例如:philips公司的p80/p87c52x2型單片機(jī)。
3)點(diǎn)擊工具欄File選項(xiàng),選中New命令,新建文件,輸入實(shí)時(shí)時(shí)鐘程序,源程
序見附錄1(實(shí)時(shí)時(shí)鐘參考程序),把文件保存到磁盤中,保存文件名為:timer.c
4)再點(diǎn)擊工具欄File選項(xiàng),選中New命令,新建文件,輸入12c軟件包
“VnC_C5LC”文件,源程序見附錄2,把文件保存到磁盤中,保存文件名為:
VIIC_C51.C;
5)再點(diǎn)擊工具欄File選項(xiàng),選中New命令,新建文件,輸入ZLG7290軟件包
“ZLG7290.C”文件,源程序見附錄3,把文件保存到磁盤中,保存文件名為:
ZLG7290.C;
6)再點(diǎn)擊工具欄File選項(xiàng),選中New命令,新建文件,輸入VIIC_C51.H頭文
件,源程序見附錄4,把文件保存到磁盤中,保存文件名為:VIIC_C51.H;
7)再點(diǎn)擊工具欄File選項(xiàng),選中New命令,新建文件,輸入ZLG7290.H頭文
件,源程序見附錄5,把文件保存到磁盤中,保存文件名為:ZLG7290.H;
8)再點(diǎn)擊工具欄File選項(xiàng),選中New命令,新建文件,輸入系統(tǒng)配置文件
"STARTUP.A51"文件(其主要功能是:定義數(shù)據(jù)段、程序段和堆棧的大小及
其起始地址、RAM的初始化、程序重新定位、初始化啟動(dòng)代碼等),源程序見附
錄6,把文件保存到磁盤中,保存文件名為:STARTUP.A51;
9)添加該文件到工程中,在Projectwindos窗口內(nèi),選中SourceGroup1然后點(diǎn)
擊鼠標(biāo)右鍵,選擇AddfilestoGroup"SourceGroupr\選擇timer.c>VIIC_C51.C、
ZLG7290.C和STARTUP.A51,單擊Add按鈕。
(-)程序文件的編譯、鏈接
1)編譯連接環(huán)境設(shè)置
A、點(diǎn)擊菜單欄上的Project項(xiàng),選擇Optionfortarget,targets將出現(xiàn)調(diào)試環(huán)境設(shè)
置界面。
B、Target屬性的設(shè)置,設(shè)置Off-ChipCodeMemory欄內(nèi)的Eprom選項(xiàng),start下
輸入0x8000,size下輸入0x4000;Off-ChipXdatamemory欄內(nèi)的Eprom選項(xiàng),
start下輸入OxCOOO,size下輸入0x4000。
C、點(diǎn)擊Output選項(xiàng)卡在出現(xiàn)的窗口中選中CreateHEXfile選項(xiàng)。
D、點(diǎn)擊C51選項(xiàng)卡,勾上“Interruptvectorsata”并把0x000改為"0x8000”
E、Debug環(huán)境的設(shè)置,選擇Use選項(xiàng),勾上"loadapplicationatsta"和"gotill
main”,然后單擊Settings項(xiàng),彈出TargetSetup對話框,Port中選擇與電腦連接
的串口,然后確定。
2)程序的編譯、連接
點(diǎn)擊工具欄Project選項(xiàng),選中BuildTarget命令,選中RebuildAllTargetFile命
令對所有的工程文件進(jìn)行重新編譯,此時(shí)“OutputWindows”信息輸出窗口輸出
一些相關(guān)信息,直至編譯鏈接成功。
5、工程文件的仿真調(diào)試
1)點(diǎn)擊菜單欄的"debug”選項(xiàng),在彈出的下拉菜單中執(zhí)行"start/stopdebug
session”;
2)點(diǎn)擊菜單欄的“debug”選項(xiàng),在彈出的下拉菜單中執(zhí)行“go”;
3)點(diǎn)擊菜單欄的“debug”選項(xiàng),在彈出的下拉菜單中執(zhí)行“go”。
六、實(shí)驗(yàn)思考題
1、如果斷電還能不丟失時(shí)間應(yīng)該做哪些措施;
2、如果要降低功耗,軟件設(shè)計(jì)時(shí)應(yīng)做哪些措施。
(做完實(shí)驗(yàn)后,資料要還給指導(dǎo)老師)
附錄1實(shí)時(shí)時(shí)鐘參考程序:timer.c
#include,'reg52.hM
include癡IiC_C51H7/包含VI2C軟件包
includenzlg7290.hu
#definePCF85630xA2〃定義器件地址
#defineWRADDR0x00〃定義寫單元首地址
#defineRDADDR0x02〃定義讀單元首地址
sbitKEYJNT=P3A2;
sbitRST=P1AO;
unsignedchardisp_buff8]={0,0,0,0,0,0,0,0};//^^^;S
unsignedcharKEY;〃保存鍵值
bitswich_date=0;
unsignedchardisplay_time(unsignedchar*sd)
sd[0]=sd[0]&0x7f;〃秒屏蔽保留位
sd[l]=sd[l]&0x7f;〃分屏蔽保留位
sd[2]=sd[2]&0x3f;〃時(shí)屏蔽保留位
disp_buf[0]=(sd[0]%16);
disp_buf[l]=(sd[0]/16);
disp_buf[2]=31;
disp_buf[3]=(sd[l]%16);
disp_buf[4]=(sd[l]/16);
disp_buf[5]=31;
disp_buf⑹=(sM2]%16);
disp_buf[7]=(sd[2]/16);
ZLG7290_SendBuf(disp_buf,8);
return0;
)
unsignedchardisplay_date(unsignedchar*sd)
(
sd[0]=sd[0]&0x3f;〃日屏蔽保留位
sd[2]=sd[2]&0x1f;〃月屏蔽保留位
disp_buf[0]=(sd[0]%16);
disp_buf[1]=(sd[0J/16);
disp_buf⑵=(sd0%16)+Ox8O;〃后面加小數(shù)點(diǎn)
disp_buf[3]=(sd[2]/16);
disp_buf[4]=(sd[3]%16)+0x80;〃后面力U小數(shù)點(diǎn)
disp_buf[5]=(sd[3]/16);
disp_buf[6]=0;
disp_buf[7]=2;
ZLG7290_SendBuf(disp_buf,8);
return0;
)
unsignedcharDelayNS(unsignedcharno)
(
unsignedcharij;〃延時(shí)參數(shù)
for(;no>0;no-)
for(i=0;i<100;i++)
for(j=0;j<100;j++);
return0;
)
voidmain()
(
unsignedcharcodetd[9]={0x00,0x12,0x00,0x30,Ox12,0x06,0x05,0x02,0x04};〃定義初始
化字
unsignedcharrd[7];〃定義接收緩沖區(qū)
RST=0;
DelayNS(l);
RST=1;
ISendStr(PCF8563,WRADDR,td,0x5);〃初始化PCF8563,如果需要的話可以不去掉
DelayNS(l);
ISendStr(PCF8563,WRADDR+5,&td[5],0x4);〃初始化PCF8563,如果需要的話可以不去掉
while(l)
(
DelayNS(l);
IRcvStr(PCF8563,RDADDR,rd,0x7);〃讀現(xiàn)在的時(shí)、分、秒
DelayNS(l);
if(swich_date)
display_date(rd+3);〃調(diào)顯示日期子程序
else
display_time(rd);〃調(diào)顯示時(shí)間子程序
if(KEYJNT==0)
(
KEY=ZLG7290_GetKey();
if(KEY==l)
swich_date=-swich_date;
)
timer.c完畢*/
附錄2I2C軟件包“VHC_C51.C”文件參考程序:
VIIC_C51.C
此程序是12c操作平臺(tái)(主方式的軟件平臺(tái))的底層的C子程序,如發(fā)送數(shù)據(jù)
及接收數(shù)據(jù),應(yīng)答位發(fā)送,并提供了幾個(gè)直接面對器件的操作函數(shù),它很方便的
與用戶程序連接并擴(kuò)展..…
注意:函數(shù)是采用軟件延時(shí)的方法產(chǎn)生SCL脈沖,固對高晶振頻率要作
一定的修改.…(本例是lus機(jī)器周期,即晶振頻率要小于12MHZ)
#include<reg52.h>/*頭文件的包含*/
#include<intrins.h>
#defineucharunsignedchar/*宏定義*/
#defineuintunsignedint
#define_Nop()_nop_()/*定義空指令*/
/*常,變量定義區(qū)*/
/*端口位定義*/
sbitSDA=P”7;/*模擬I2C數(shù)據(jù)傳送位*/
sbitSCL=P1A6;/*模擬I2C時(shí)鐘控制位*/
/*狀態(tài)標(biāo)志*/
bitack;/*應(yīng)答標(biāo)志位*/
起動(dòng)總線函數(shù)
函數(shù)原型:voidStart_I2c();
功能:啟動(dòng)12c總線,即發(fā)送I2C起始條件.
voidStart_I2c()
SDA=1;/*發(fā)送起始條件的數(shù)據(jù)信號(hào)*/
_Nop();
SCL=1;
_Nop();/*起始條件建立時(shí)間大于4.7us,延時(shí)*/
_Nop();
_Nop();
_Nop();
_Nop();
SDA=O;/*發(fā)送起始信號(hào)*/
_Nop();/*起始條件鎖定時(shí)間大于4口s*/
_Nop();
_Nop();
_Nop();
_Nop();
SCL=O;/*鉗住12c總線,準(zhǔn)備發(fā)送或接收數(shù)據(jù)*/
_Nop();
_Nop();
)
結(jié)束總線函數(shù)
函數(shù)原型:voidStop」2c();
功能:結(jié)束I2C總線,即發(fā)送I2C結(jié)束條件.
voidStop_I2c()
SDA=O;/*發(fā)送結(jié)束條件的數(shù)據(jù)信號(hào)*/
_Nop();/*發(fā)送結(jié)束條件的時(shí)鐘信號(hào)*/
SCL=1;/*結(jié)束條件建立時(shí)間大于4us*/
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
SDA=1;/*發(fā)送12c總線結(jié)束信號(hào)*/
_Nop();
_Nop();
_Nop();
_Nop();
字節(jié)數(shù)據(jù)傳送函數(shù)
函數(shù)原型:voidSendByte(ucharc);
功能:將數(shù)據(jù)c發(fā)送出去,可以是地址,也可以是數(shù)據(jù),發(fā)完后等待應(yīng)答,并對
此狀態(tài)位進(jìn)行操作.(不應(yīng)答或非應(yīng)答都使ack=0假)
發(fā)送數(shù)據(jù)正常,ack=l;ack=0表示被控器無應(yīng)答或損壞。
voidSendByte(ucharc)
ucharBitCnt;
for(BitCnt=0;BitCnt<8;BitCnt++)/*要傳送的數(shù)據(jù)長度為8位*/
{
if((c?BitCnt)&0x80)SDA=1;/*判斷發(fā)送位*/
elseSDA=O;
_Nop();
SCL=1;/*置時(shí)鐘線為高,通知被控器開始接收數(shù)據(jù)位*/
_Nop();
_Nop();/*保證時(shí)鐘高電平周期大于4us*Z
_Nop();
_Nop();
_Nop();
SCL=O;
)
_Nop();
_Nop();
SDA=1;/*8位發(fā)送完后釋放數(shù)據(jù)線,準(zhǔn)備接收應(yīng)答位*/
_Nop();
_Nop();
SCL=1;
_Nop();
_Nop();
_Nop();
if(SDA==l)ack=O;
elseack=l;/*判斷是否接收到應(yīng)答信號(hào)*/
SCL=O;
_Nop();
_Nop();
)
字節(jié)數(shù)據(jù)傳送函數(shù)
函數(shù)原型:ucharRcvByte();
功能:用來接收從器件傳來的數(shù)據(jù),并判斷總線錯(cuò)誤(不發(fā)應(yīng)答信號(hào)),
發(fā)完后請用應(yīng)答函數(shù)。
ucharRcvByte()
ucharretc;
ucharBitCnt;
retc=O;
SDA=1;/*置數(shù)據(jù)線為輸入方式*/
for(BitCnt=0;BitCnt<8;BitCnt++)
_Nop();
SCL=O;/*置時(shí)鐘線為低,準(zhǔn)備接收數(shù)據(jù)位*/
_Nop();
_Nop();/*時(shí)鐘低電平周期大于4.7us*/
_Nop();
_Nop();
_Nop();
SCL=1;/*置時(shí)鐘線為高使數(shù)據(jù)線上數(shù)據(jù)有效*/
_Nop();
_Nop();
retc=retc?l;
if(SDA==l)retc=retc+l;/*讀數(shù)據(jù)位,接收的數(shù)據(jù)位放入relc中*/
_Nop();
_Nop();
)
SCL=O;
_Nop();
_Nop();
return(retc);
應(yīng)答子函數(shù)
原型:voidAck_I2c(bita);
功能:主控器進(jìn)行應(yīng)答信號(hào),(可以是應(yīng)答或非應(yīng)答信號(hào))
voidAck_I2c(bita)
if(a==0)SDA=0;/*在此發(fā)出應(yīng)答或非應(yīng)答信號(hào)*/
elseSDA=1;
_Nop();
_Nop();
_Nop();
SCL=1;
_Nop();
_Nop();/*時(shí)鐘低電平周期大于4us*/
_Nop();
_Nop();
_Nop();
SCL=0;/*清時(shí)鐘線,鉗住12c總線以便繼續(xù)接收*/
_Nop();
_Nop();
向無子地址器件發(fā)送字節(jié)數(shù)據(jù)函數(shù)
函數(shù)原型:bitISendByte(ucharsla,ucahrc);
功能:從啟動(dòng)總線到發(fā)送地址,數(shù)據(jù),結(jié)束總線的全過程,從器件地址sla.
如果返回1表示操作成功,否則操作有誤。
注意:使用前必須已結(jié)束總線。
bitISendByte(ucharsla,ucharc)
Start」2c();/*啟動(dòng)總線*/
SendByte(sla);/*發(fā)送器件地址*/
if(ack==O)return(O);
SendByte(c);/*發(fā)送數(shù)據(jù)*/
if(ack==0)retum(0);
Stop_I2c();/*結(jié)束總線*/
relurn(l);
向有子地址器件發(fā)送多字節(jié)數(shù)據(jù)函數(shù)
函數(shù)原型:bitISendStr(ucharsla,ucharsuba,ucahr*s,ucharno);
功能:從啟動(dòng)總線到發(fā)送地址,子地址,數(shù)據(jù),結(jié)束總線的全過程,從器件
地址sla,子地址suba,發(fā)送內(nèi)容是s指向的內(nèi)容,發(fā)送no個(gè)字節(jié)。
如果返回1表示操作成功,否則操作有誤。
注意:使用前必須已結(jié)束總線。
bitISendStr(ucharsla,ucharsuba,uchar*s,ucharno)
uchari;
Start_I2c();/*啟動(dòng)總線*/
SendByte(sla);/*發(fā)送器件地址*/
if(ack==O)return(O);
SendByte(suba);/*發(fā)送器件子地址*/
if(ack==O)return(O);
for(i=0;i<no;i++)
SendByte(*s);/*發(fā)送數(shù)據(jù)*/
if(ack==O)return(O);
s++;
)
Stop_I2c();/*結(jié)束總線*/
relum(l);
向無子地址器件讀字節(jié)數(shù)據(jù)函數(shù)
函數(shù)原型:bitIRcvByte(ucharsla,ucahr*c);
功能:從啟動(dòng)總線到發(fā)送地址,讀數(shù)據(jù),結(jié)束總線的全過程,從器件地
址sla,返回值在c.
如果返回1表示操作成功,否則操作有誤。
注意:使用前必須已結(jié)束總線。
bitIRcvByte(ucharsla,uchar*c)
Start_I2c();/*啟動(dòng)總線*/
SendByte(sla+l);/*發(fā)送器件地址*/
if(ack==O)return(O);
*c=RcvByte();/*讀取數(shù)據(jù)*/
Ack_I2c(l);/*發(fā)送非就答位*/
Stop_I2c();/*結(jié)束總線*/
return(l);
向有子地址器件讀取多字節(jié)數(shù)據(jù)函數(shù)
函數(shù)原型:bitISendStr(ucharsla,ucharsuba,ucahr*s,ucharno);
功能:從啟動(dòng)總線到發(fā)送地址,子地址,讀數(shù)據(jù),結(jié)束總線的全過程,從器件
地址sla,子地址suba,讀出的內(nèi)容放入s指向的存儲(chǔ)區(qū),讀no個(gè)字節(jié)。
如果返回1表示操作成功,否則操作有誤。
注意:使用前必須已結(jié)束總線。
bitIRcvStr(ucharsla,ucharsuba,uchar*s,ucharno)
uchari;
Start_I2c();/*啟動(dòng)總線*/
SendByte(sla);/*發(fā)送器件地址*/
if(ack==O)return(O);
SendByte(suba);/*發(fā)送器件子地址*/
if(ack—O)return(O);
Starl_I2c();
SendByte(sla+l);
if(ack==O)return(O);
for(i=0;i<no-1;i++)
(
*s=RcvByte();/*發(fā)送數(shù)據(jù)*/
Ack_I2c(0);/*發(fā)送就答位*/
s++;
)
*s=RcvByte();
Ack_I2c(l);/*發(fā)送非應(yīng)位*/
Stop_I2c();/*結(jié)束總線*/
return(l);
)
/*完畢*/
/*12c軟件包“VIIC_C51.C”文件完畢*/
附錄3:ZLG7290軟件包“ZLG7290.C”文件參考程序:
廣州周立功單片機(jī)發(fā)展有限公司
研究所
產(chǎn)品一部
**文件信息-
**文件名:ZLG7290.C
**創(chuàng)建人:葉皓賁
**最后修改日期:2003-3-4
**描述:ZLG7290庫函數(shù)程序
**
**歷史版本信息——
**創(chuàng)建人:葉皓賁
**版本:0.01
**日期:2003-3-4
**描述:ZLG7290庫函數(shù)程序
**修改人:
**版本:
**日期:
**描述:
**
**當(dāng)前版本修訂
**修改人:
**日期:
**描述:
**_________________________________________________
include”REG52.h”
#includenviic_c51.hn
#definezlg72900x70//ZLG7290的IIC地址
#defineSubKey0x01
#defineSubCmdBuf0x07
#defineSubDpRam0x10
**函數(shù)名稱:DelayNS
**功能描述:長軟件延時(shí)
**輸入:i:延時(shí)參數(shù),值越大時(shí)延時(shí)越久
**
**輸出:無
**全局變量:無
**調(diào)用模塊:無
**
**作者:葉皓賁
**日期:200334
**_______________________________________________________________________
**修改人:
**日期:
**_______________________________________________________________________
voiddelayMS(unsignedchari)
(
unsignedcharj,k;
for(k=0;k<i;k++)
for(j=0;j<60;j++);
)
**函數(shù)名稱:ZLG7290_SendData
**功能描述:發(fā)送數(shù)據(jù)
**輸入:SubAdd:輸入數(shù)據(jù)
**DATA:輸入值
**
**輸出:0:Fail
**1:OK
**全局變量:無
**調(diào)用模塊:delayMS
**
**作者:葉皓賁
**日期:200334
**_______________________________________________________________________
**修改人:
**日期:
**_______________________________________________________________________
unsignedcharZLG7290_SendData(unsignedcharSubAdd,unsignedcharData)
(
if(SubAdd>0xl7)
return0;
ISendStr(zlg7290,SubAdd,&Data,1);
delayMS(10);
return1;
)
**函數(shù)名稱:ZLG7290_SendCmd
**功能描述:發(fā)送命令(對子地址7、8)
**輸入:DATA1:命令1
**DATA2:命令2
**輸出:0:Fail
**1:OK
**全局變量:無
**調(diào)用模塊:ISendStr、delayMS
**
**作者:葉皓賁
**日期:200334
**_______________________________________________________________________
**修改人:
**日期:
**_______________________________________________________________________
unsignedcharZLG7290_SendCmd(unsignedcharData1,unsignedcharData2)
(
unsignedcharData⑵;
Data[0]=Datal;
Data[l]=Data2;
ISendStr(zlg7290,0x07,Data,2);
delayMS(lO);
return1;
)
**函數(shù)名稱:ZLG7290_SendBuf
**功能描述:向顯示緩沖區(qū)發(fā)送數(shù)據(jù)
**輸入:*disp_buf:要發(fā)送數(shù)據(jù)的起始地址
**num:發(fā)送個(gè)數(shù)
**
**輸出:無
**全局變量:無
**調(diào)用模塊:ZLG7290_SendCmd
**
**作者:葉皓賁
**日期:2003-3-4
**修改人:
**日期:
**_______________________________________________________________________
voidZLG7290_SendBuf(unsignedchar*disp_buf,unsignedcharnum)
(
unsignedchari;
for(i=0;i<num;i++)
|
ZLG7290_SendCmd(0x60+i,*disp_buf);
disp_buf++;
}
)
**函數(shù)名稱:ZLG7290_GetKey
**功能描述:讀取鍵值
**輸入:無
**
**輸出:>0鍵值
**=0無鍵按下
**全局變量:無
**調(diào)用模塊:IRcvStr、delayMS
**作者:葉皓賁
**日期:2003-3-4
**_______________________________________________________________________
**修改人:
**日期:
**_______________________________________________________________________
unsignedcharZLG7290_GetKey()
(
unsignedcharrece;
rece=O;
IRcvStr(zlg7290,1,&rece,1);
delayMS(lO);
returnrece;
)
/*“ZLG7290.C”文件完畢*/
附錄4VIIC_C51.H頭文件參考程序:
頭文件名VHC_C51.H
這個(gè)頭文件對應(yīng)的庫是VIIC_C51.LIB,庫中有幾個(gè)模擬I2C的函數(shù),加入此文件
即可使用12c平臺(tái)(主方式的軟件平臺(tái)),函數(shù)是對LPC764的12c的I/O口實(shí)
現(xiàn),即其Pl.3(SDA),P1.2(SCL),51系列機(jī)型可以通用.
注意:函數(shù)是采用軟件延時(shí)的方法產(chǎn)生SCL脈沖,固對高晶振頻率要作
一定的修改(本例是lus機(jī)器周期,即晶振頻率要小于12MHZ).
(函數(shù)的使用可參考給出的事例程序.)
#ifdefuchar
#defineREADYDEF1/*宏uchar已定義*/
#else
#defineucharunsignedchar
#endif
無子地址發(fā)送字節(jié)數(shù)據(jù)函數(shù)
功能:從啟動(dòng)總線到發(fā)送地址,數(shù)據(jù),結(jié)束總線的全過程,從器件地址sla.
如果返回1表示操作成功,否則操作有誤。
externbitISendByte(ucharsla,ucharc);
有子地址發(fā)送多字節(jié)數(shù)據(jù)函數(shù)
功能:從啟動(dòng)總線到發(fā)送地址,子地址,數(shù)據(jù),結(jié)束總線的全過程,從器件
地址sla,子地址suba,發(fā)送內(nèi)容是s指向的內(nèi)容,發(fā)送no個(gè)字節(jié)。
如果返回1表示操作成功,否則操作有誤。
externbitISendStr(ucharsla,ucharsuba,uchar*s,ucharno);
無子地址讀字節(jié)數(shù)據(jù)函數(shù)
功能:從啟動(dòng)總線到發(fā)送地址,讀數(shù)據(jù),結(jié)束總線的全過程,從器件地
址sla,返回值在c.
如果返回1表示操作成功,否則操作有誤。
externbitIRcvByte(ucharsla,uchar*c);
有子地址讀取多字節(jié)數(shù)據(jù)函數(shù)
功能:從啟動(dòng)總線到發(fā)送地址,子地址,讀數(shù)據(jù),結(jié)束總線的全過程,從器件
地址sla,子地址suba,讀出的內(nèi)容放入s指向的存儲(chǔ)區(qū),讀no個(gè)字節(jié)。
如果返回1表示操作成功,否則操作有誤。
externbitIRcvStr(ucharsla,ucharsuba,uchar*s,ucharno);
#ifndefREADYDEF
#undefuchar
#endif
/**********************-①仍,夕VIIC_C51.H結(jié)束*********/
附錄5ZLG7290.H頭文件參考程序:
頭文件名ZLG7290.H
externunsignedcharZLG7290_SendData(unsignedcharSubAdd,unsignedcharData);
externvoidZLG7290_SendBuf(unsignedchar*disp_buf,unsignedcharnum);
externunsignedcharZLG7290_SendCmd(unsignedcharData1,unsignedcharData2);
externunsignedcharZLG7290_GetKey();
/************木*********頭文件名ZLG7290H結(jié)束********去/
附錄6系統(tǒng)配置文件“STARTUP.A51”文件參考程序
SNOMOD51
;ThisfileispartoftheC51Compilerpackage
;Copyright(c)1988-2002KeilElektronikGmbHandKeilSoftware,Inc.
;STARTUP.A51:Thiscodeisexecutedafterprocessorreset.
;TotranslatethisfileuseA51withthefollowinginvocation:
;A51STARTUP.A51
;TolinkthemodifiedSTARTUP.OBJfiletoyourapplicationusethefollowing
;BL51invocation:
;BL51<yourobjectfilelist>,STARTUP.OBJ<controls>
;User-definedPower-OnInitializationofMemory
;WiththefollowingEQUstatementstheinitializationofmemory
;atprocessorresetcanbedefined:
;;theabsolutestart-addressofIDATAmemoryisalways0
IDATALENEQU80H;thelengthofIDATAmemoryinbytes.
XDATASTARTEQUOH;theabsolutestart-addressofXDATAmemory
XDATALENEQUOH;thelengthofXDATAmemoryinbytes.
PDATASTARTEQUOH;theabsolutestart-addressofPDATAmemory
PDATALENEQUOH;thelengthofPDATAmemoryinbytes.
;Notes:TheIDATAspaceoverlapsphysicallytheDATAandBITareasofthe
;8051CPU.AtminimumthememoryspaceoccupiedfromtheC51
;run-timeroutinesmustbesettozero.
;ReentrantStackInitilization
;ThefollowingEQUstatementsdefinethestackpointerforreentrant
;functionsandinitializedit:
;StackSpaceforreentrantfunctionsintheSMALLmodel.
IBPSTACKEQU0;setto1ifsmallreentrantisused.
IBPSTACKTOPEQUOFFH+1;settopofstacktohighestlocation+1.
;StackSpaceforreentrantfunctionsintheLARGEmodel.
XBPSTACKEQU0;setto1iflargereentrantisused.
XBPSTACKTOPEQU0FFFFH+1;settopofstacktohighestlocation+1.
;StackSpaceforreentrantfunctionsintheCOMPACTmodel.
PBPSTACKEQU0;setto1ifcompactreentrantisused.
PBPSTACKTOPEQUOFFFFH+1;settopofstacktohighestlocation+1.
;PageDefinitionforUsingtheCompactModelwith64KBytexdataR
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店管理權(quán)轉(zhuǎn)讓合同三篇
- 2024年電子美容儀項(xiàng)目申請報(bào)告
- 公證房產(chǎn)合同范本
- 餐飲行業(yè)品牌發(fā)展方案計(jì)劃
- 鹵菜購銷合同范本
- 人防車位合同范本
- 文稿合同范本
- 定染合同范本
- 市政基礎(chǔ)設(shè)施電路安裝施工方案
- 旅游景區(qū)消防安全管理實(shí)施方案
- JTG∕T L80-2014 高速公路改擴(kuò)建交通工程及沿線設(shè)施設(shè)計(jì)細(xì)則
- 五年級上冊小學(xué)高年級學(xué)生讀本第11講《國家安全是頭等大事》教學(xué)設(shè)計(jì)
- 2024年全國注冊消防工程師之消防技術(shù)綜合能力考試重點(diǎn)試題(詳細(xì)參考解析)
- 2024年北京工業(yè)職業(yè)技術(shù)學(xué)院高職單招筆試歷年職業(yè)技能測驗(yàn)典型例題與考點(diǎn)解析含答案
- Unit 7 Section A(2a-2e)課件人教版2024新教材七年級上冊英語
- 訴求申請書范文
- 《小型水庫雨水情測報(bào)和大壩安全監(jiān)測設(shè)施建設(shè)與運(yùn)行管護(hù)技術(shù)指南》
- 建筑施工現(xiàn)場作業(yè)人員應(yīng)急救援培訓(xùn)內(nèi)容
- 2024年中國郵政集團(tuán)限公司海南省分公司社會(huì)招聘124人【重點(diǎn)基礎(chǔ)提升】模擬試題(共500題)附帶答案詳解
- 2024年建筑《主體結(jié)構(gòu)及裝飾裝修》考試習(xí)題庫(濃縮500題)
- 幼兒園小班科學(xué)課件:《菊花開了》
評論
0/150
提交評論