您当前的位置:五五电子网电子知识单片机-工控设备ARM单片机并口模拟IIC的经验之谈 正文
并口模拟IIC的经验之谈

并口模拟IIC的经验之谈

点击数:7550 次   录入时间:03-04 11:52:37   整理:http://www.55dianzi.com   ARM单片机
a = 20;
while(a > 0)
{
   //任意读;
   port2iic.i2c_start();
   port2iic.i2c_writebyte('\xa0');
   d = char(b);
   port2iic.i2c_writebyte(d);
   port2iic.i2c_start();
   port2iic.i2c_writebyte('\xa1');
   d = port2iic.i2c_readbyte();
   port2iic.i2c_stop();
   buff[i] = d;
   i++;
   b= b+1;
   a = a - 1;
}
#endif
#else
len = strlen(s);
for(i = 0; i < len; i+=2)
{
   temp[0] = s[i];
   temp[1] = s[i+1];
   temp[2] = 0x0;
   sscanf(temp,"%x",&WriValue);
   m_nValue = (DWORD)WriValue;
   SetPortVal(0x378,m_nValue,1);
}
#endif
SetDlgItemText(IDC_WRITE_STATUS,"发送结束");
return;
}

//////////////////////////////////
//在定时器里接收数据按钮
/////////////////////////////////
void Cport2iicdlg1::OnTimer(UINT nIDEvent)
{
// TOD Add your message handler code here and/or call default
port2iicbase port2iic;
DWORD m_nValue = 0;
CString temp1,temp2;
CEdit* pReadEdit;
unsigned short buff[100];

unsigned short a,b;
char d;
int i;
pReadEdit = (CEdit*) GetDlgItem(IDC_EDIT_READ);
MEMSet(buff,0x0,100);
#ifdef _PORT2IIC
//任意读;
#if 0
//读写入的数据
b = 0;
a = 5;
i = 0;
while(a > 0)
{
   //任意读;
   port2iic.i2c_start();
   port2iic.i2c_writebyte('\xa0');
   d = char(b);
   port2iic.i2c_writebyte(d);
   port2iic.i2c_start();
   port2iic.i2c_writebyte('\xa1');
   d = port2iic.i2c_readbyte();
   port2iic.i2c_stop();
   b= b+1;
   a = a - 1;
   buff[i] = (unsigned short)d;
   buff[i] = buff [i] & 0x00ff;
   temp1 = " ";
   temp2.Format(_T("%.2x"),buff[i]);
   if(m_read != _T(""))
    m_read = m_read + temp1;
   m_read = m_read + temp2;
   i++;
   SetDlgItemText(IDC_EDIT_READ,m_read);
   DWORD dwSel = pReadEdit->GetSel();
   pReadEdit->SetSel(HIWORD(dwSel), -1);
}
#endif
#if 1
//顺序读
//读写入的数据
b = 0;
a = 5;
i = 0;
port2iic.i2c_start();
port2iic.i2c_writebyte('\xa0');
d = char(b);
port2iic.i2c_writebyte(d);
port2iic.i2c_start();
port2iic.i2c_writebyte('\xa1');
while(a > 0)
{
   d = port2iic.i2c_readbyte();
   a = a - 1;
   if(a > 0)
    port2iic.i2c_ask();
   buff[i] = (unsigned short)d;
   buff[i] = buff [i] & 0x00ff;
   temp1 = " ";
   temp2.Format(_T("%.2x"),buff[i]);
   if(m_read != _T(""))
    m_read = m_read + temp1;
   m_read = m_read + temp2;
   i++;
   SetDlgItemText(IDC_EDIT_READ,m_read);
   DWORD dwSel = pReadEdit->GetSel();
   pReadEdit->SetSel(HIWORD(dwSel), -1);
}
port2iic.i2c_stop();
#endif
#else
GetPortVal(0x378, &m_nValue,1);
m_nValue = m_nValue & 0x000000ff;
temp1 = " ";
temp2.Format(_T("%.2x"),m_nValue);
if(m_read != _T(""))
   m_read = m_read + temp1;
m_read = m_read + temp2;
SetDlgItemText(IDC_EDIT_READ,m_read);
DWORD dwSel = pReadEdit->GetSel();
pReadEdit->SetSel(HIWORD(dwSel), -1);
#endif
CDialog::OnTimer(nIDEvent);
return;
}

    以上程序已经经过了验证能够正确运行。



上一页  [1] [2] [3] 


本文关键字:暂无联系方式ARM单片机单片机-工控设备 - ARM单片机

《并口模拟IIC的经验之谈》相关文章>>>