亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
12位AD模數轉換(TLC2543驅動)
[打印本頁]
作者:
407871699
時間:
2017-1-22 11:35
標題:
12位AD模數轉換(TLC2543驅動)
該驅動多增加了一次寫端口地址,目的是讀取需要的端口值。
因為AD操作時,寫地址后要再下次才能讀上次的數據。
(這在輸入的模擬信號是多端口時,避免邏輯錯誤。
當然也可以采取其他方式避免這種邏輯錯誤)
#include<reg52.h>
#include <intrins.h>
sbit AD_OUT=P3^2; //從 2543讀數據
sbit AD_IN =P3^3; //輸出信號to 2543
sbit AD_CS =P3^4; //片選2543
sbit AD_CLK=P3^5; //時鐘信號
sbit AD_EOC=P3^7;//無用
void AD2543_ini() //初始化2543
{
AD_CS=1;
AD_CLK=0;
}
unsigned int Read2543(unsigned char port) //port為準備讀取的端口
{
unsigned int ad=0,n;//變量ad為返回值,n為臨時變量(用于端口操作)
unsigned char i;
AD_CLK=0; //clk先給0,避免出錯
AD_CS=0; //片選,0有效
n=port; //用n來操作端口port,目的是寫2次端口地址,這樣回來的才是真正的端口ad值
n<<=4; //先偏移4,讓地址到高位
for(i=0;i<12;i++) //輸入12位端口地址(其實前4位是地址,后8位都是0)
{
AD_IN=(bit)(n&0x80); //高位(第8位)輸出。(串口模式)
AD_CLK=1;
AD_CLK=0;
n<<=1; //左移1位。利用循環逐位輸出
}
AD_CS=1; //關閉片選
{_nop_();_nop_();_nop_();_nop_();} //緩沖一下
{_nop_();_nop_();_nop_();_nop_();} //緩沖
AD_CS=0; //再次片選
n=port; //再次寫端口地址
n<<=4;
for(i=0;i<12;i++)
{
AD_IN=(bit)(n&0x80);
AD_CLK=1;
AD_CLK=0;
n<<=1;
}
AD_CS=1; //停止
{_nop_();_nop_();_nop_();_nop_();}
{_nop_();_nop_();_nop_();_nop_();}
AD_CS=0; //片選。開始讀取數據
for(i=0;i<12;i++) //12位循環
{
ad<<=1; //先左移1位
if(AD_OUT) ad|=0x01; //判斷:如AD_OUT為1,則ad低位賦值1
AD_CLK=1;
AD_CLK=0;
}
AD_CS=1; //結束讀數據
return(ad); //返回值ad
}
作者:
407871699
時間:
2017-1-25 21:03
自己頂一個。這個對新手很有用的
作者:
admin
時間:
2017-2-12 23:20
好資料,
51黑有你更精彩。!
作者:
橘生淮南則為橘
時間:
2019-4-22 14:51
多謝!幫助
作者:
咚咚咚哈
時間:
2019-5-9 16:45
控制字的第三位和第四位都是零嗎?
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1