#includereg51.h

創(chuàng)新互聯(lián)建站專注于仁布網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供仁布營銷型網(wǎng)站建設(shè),仁布網(wǎng)站制作、仁布網(wǎng)頁設(shè)計、仁布網(wǎng)站官網(wǎng)定制、微信小程序定制開發(fā)服務(wù),打造仁布網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供仁布網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
#includeINTRINS.h
#define?u16?unsigned?int
#define?u8?unsigned?char
/*********************************************************/
u8?ds[3];?//數(shù)碼管顯示緩存
//共陽
code?u8?w[]={0x01,0x02,0x04,0x08}; //位碼
code?u8?d[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};//斷碼
void?dispaly(){//顯示函數(shù)
static?u8?a;
if(++a=3)a=0;
P0=0xff;
P2=w[a];
P0=d[ds[a]];
}
/****************************************/
void?init() //初始化函數(shù)
{???TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;
ET0=1;
}
u16?count=0; //計數(shù)
u16?V=0;//速度
u16?js;//計時
u8?mc=P1^1;//脈沖引腳
u8?tt=0xff;
void?smmc(){
tt=1;
if(mc)tt|=0x01;
if((tt0x03)==0x02){//下降沿脈沖
if(count65535)count++;
}
}
/***********************************/
void?main()//主函數(shù)
{
init();//系統(tǒng)初始化
TR0=1;?//定時器開始計時
while(1){
ds[0]=V/100%10;?//計數(shù)送到數(shù)碼管顯示緩存中
ds[1]=V/10%10;
ds[2]=V%10;
smmc();
if(js=10000){//10s
js=0;
V=4*count/10+2;//計算速度
count=0;
}
}
}
/****************************/
void?timer0()?interrupt?1//1ms定時器
{???
TH0=(65536-1000)/256;//重載初值
TL0=(65536-1000)%256;
dispaly();//顯示
js++;
}
定義一個延時xms毫秒的延時函數(shù)
void delay(unsigned int xms) // xms代表需要延時的毫秒數(shù)
{
unsigned int x,y;
for(x=xms;x》0;x--)
for(y=110;y》0;y--);
}
使用:
void Delay10us(uchar Ms)
{
uchar data i;
for(;Ms》0;Ms--)
for(i=26;i》0;i--);
}
i=[(延時值-1.75)*12/Ms-15]/4
擴展資料
1、在C51中進行精確的延時子程序設(shè)計時,盡量不要或少在延時子程序中定義局部變量,所有的延時子程序中變量通過有參函數(shù)傳遞。
2、在延時子程序設(shè)計時,采用do…while,結(jié)構(gòu)做循環(huán)體要比for結(jié)構(gòu)做循環(huán)體好。
3、在延時子程序設(shè)計時,要進行循環(huán)體嵌套時,采用先內(nèi)循環(huán),再減減比先減減,再內(nèi)循環(huán)要好。
#include stdlib.h
srand(dat); //初始化隨機種子,使用該函數(shù)需要上面的頭文件。如果不要這個,每次開機,對應(yīng)的隨機數(shù)都是相同的. dat 也是需要是個隨機數(shù),一般可以用掉電存儲的方式來讀取。
dat = rand() ;
extern void _nop_ (void); //空操作,相當于8051的NOP指令
extern bit _testbit_ (bit); //測試并清零位,相當于8051的JBC指令
extern unsigned char _cror_ (unsigned char, unsigned char); //字符循環(huán)右移
extern unsigned int _iror_ (unsigned int, unsigned char); //整數(shù)循環(huán)右移
extern unsigned long _lror_ (unsigned long, unsigned char); //長整數(shù)循環(huán)右移
extern unsigned char _crol_ (unsigned char, unsigned char); //字符循環(huán)左移
extern unsigned int _irol_ (unsigned int, unsigned char); //整數(shù)循環(huán)左移
extern unsigned long _lrol_ (unsigned long, unsigned char); //長整數(shù)循環(huán)左移
extern unsigned char _chkfloat_(float); //測試并返回源點數(shù)狀態(tài)
看你的要求~~
C51定義的庫函數(shù)與標準c語言中定義的庫函數(shù)不同;與標準c的輸入輸出處理不相同;與標準c在函數(shù)使用方面也有一定的區(qū)別。數(shù)據(jù)類型和標準c語言中的數(shù)據(jù)類型有一定的區(qū)別,變量類型比如int類型占用空間不一樣,像特殊位型sbit在標準c中就沒有;變量中的存儲模式與標準c語言中的變量的存儲模式不相同,C51存儲類型有ddata、bdata、idata等多種;與標準c的輸入輸出處理不相同;與標準c在函數(shù)使用方面有一定的區(qū)別。
單片機C51語言是建立在標準c語言架構(gòu)基礎(chǔ)上的,兩者基本語法和結(jié)構(gòu)是相通、一樣的,但是單片機C51語言由于加入了對單片機I/O口,寄存器的控制,所以才與標準c語言有所差異。
C51是基于標準的C語言擴展而來的,所以,標準C語言能做的東西,C51也可以。
平方運算,自不必說,就是兩個數(shù)相乘:
例如:float a,b,c; c = a*b;
開方,則需要用到庫函數(shù):
標準c語言里用的是 sqrt()函數(shù),這個函數(shù)包含在math.h文件中。
所以:
#include math.h
c = sqrt(a);
就可以了
當前名稱:c51中c語言函數(shù),c51語言在標準c語言的基礎(chǔ)上
文章來源:http://chinadenli.net/article7/dseceij.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)頁設(shè)計公司、網(wǎng)站內(nèi)鏈、網(wǎng)站排名、建站公司、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)