① 單片機c51求大神寫一個C語言程序!挺急的
#include<reg51.h>
#include<intrins.h>
voiddelay(inta)
{
unsignedchari;
while(a--)
for(i=0;i<120;i++);
}
voidext0()interrupt0
{
P1=0xff;
delay(5000);
}
main()
{
unsignedcharled=0xfe;
EX0=1;
IT0=1;
EA=1;
while(1)
念搜返{
漏凱P1=led;
led=_crol_(led,1);
delay(500);
仔飢}
}
② c51單片機代碼求解釋
不知道這些代碼是幹嘛的,指或程序也不完整,只能給你字面的解釋:
//XX子程序,有兩個輸入參數,一個是位變數CHTimeIcon,UCHAR的原型應該是關鍵字unsigned char 那麼另一個是無符號字元型變數RowSeq
void LeftShift(bit CHTimeIcon, UCHAR RowSeq)
{
bit cFlg;//定義了1個位變數cFlg
UCHAR i, k;//定義了2個無符號字元型變數畢桐i和k
UCHAR bdata CHCode;//定義了1個可位定址的無符號字元型變數CHCode
i = RowSeq<<1;//RowSeq沒有在該子程序內聲明,應該是全局變數,將RowSeq整個數據左移1位,最高位被移走,最低位變成0,然後將該值賦給變數i
if (CHTimeIcon==1 || G_OrderIcon!=0)//如果CHTimeIcon的值是1或者G_OrderIcon的值不等於0則進入下一行(CHTimeIcon和G_OrderIcon也是全局變數)
cFlg = IBytesLeftShift(&G_Cur_TimeCode[i+1], 0);//執行IBytesLeftShift(&G_Cur_TimeCode[i+1], 0)這個子程序,返回1個位變數,並將該值賦給cFlg,&G_Cur_TimeCode[i+1]的意思是把數組G_Cur_TimeCode[]的第i+1位數取出來作為地址變數參數送到IBytesLeftShift子程序中。
else
{
if (i == 0 || i == 16)//如果i等於0或者i=16,執行下面一句程序
CHCode = G_Cur_CHCode[i/16];將數組G_Cur_CHCode[]中的第i/16位數值取出送給變數CHCode
//取位元組最高位,並左移
//cFlg = ReturnFlg(&CHCode);
cFlg = (CHCode & 0x80)>>7;//將CHCode除了最高位,其它位統統清0,然後把最高位移動到最低位的位置上,例如10110001->10000000->00000001,然後把結果賦值給變數cFlg,要注意的是cFlg是bit變唯數伍量,在C語言里char變數賦值給bit變數,只要char變數的值不為0則賦給bit變數的值就是1,反之則是0。
CHCode<<=1;//CHCode整體左移1位,例如00000001->00000010
}
//顯示緩沖區漢字點陣碼左移位
for (k = _WIN_CH_NUM_; k > 0; k--)//將_WIN_CH_NUM_的值賦給k,作為k的初值,只要k的值大於0則執行下面的程序,執行完畢後k的值減1,然後判斷k的值是否還大於0,大於0則繼續循環,否則退出for語句
cFlg = TwoBytesLeftShift(&G_CHCode[k-1][i+1], cFlg);//執行TwoBytesLeftShift(&G_CHCode[k-1][i+1], cFlg)這個子程序,返回1個bit變數,並將該值賦給cFlg,TwoBytesLeftShift有兩個輸入參數,1個是&G_CHCode[k-1][i+1],1個是cFlg,上面有類似的語句說明。
}
③ 編寫一個完整的單片機C51程序
#include<reg51.h>
sbit led=P1^0; //單片機管腳位聲明
void main()
{
TMOD=0x01; //定時器TO工作在方式1
TH0=(65536-5000)/256; //裝初值,12M晶振 1為1us; 5000為5000us=5ms;
TL0=(65536-5000)%256;
EA =1; //開總中斷
ET0=1; //開定時器TO中斷
TR0=1; //啟動定時器
P1=0; //初始化P1口
while(1) ; //程序在這里等待中斷發生
}
void T0_time() interrupt 1
{
unsigned char num;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
num++;
if(num==100) //0.5S (1s閃爍1次==0.5S亮0.5S滅)
{
num=0;
led=~led; //led狀態取反
}
}
④ 求C51單片機 按鍵切換三種樣式流水燈代碼
#include<reg51.h>
#include<intrins.h>
#defineucharunsignedchar
ucharled,tm,key;
sbitK=P1^0;
voidt0isr()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tm++;
if(tm>=10)
{
tm=0;
switch(key)
{
case0:led=_crol_(led,1);P0=led;break;
念搜返case1:led=_cror_(led,1);P0=led;break;
case2:led=~led;P0=led;break;
漏凱default:break;
仔飢}
}
}
main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
led=0xfe;
key=0;
while(1)
{
if(K==0)
{
while(K==0);
key++;
key%=3;
if(key==0)led=0xfe;
elseif(key==1)led=0x7f;
elseled=0x55;
}
}
}
⑤ 單片機c51編程
也不曉樓主把空螞轎這個C程序發出來,有不有什麼問題需要幫助的
我自各兒做的一個斗肆數字鍾物做:00-00-00型的,為24小時制的,匯編程序和Protues都發給了你,注意查收噢!(twp……@126.com)
⑥ C51 單片機代碼問題
void t0(void) interrupt 1 using 0
{
TH0=(65536-3000)/256;
TL0=(65536-3000)%256;
counter++; //高前計時雹念稿加1
P2=table[num]; //P2讀取列位值
if((counter&0x80)==0)
P0=Dispay[temp][num]; //P0讀取:數組-數字和字母
else
P0=0; //每128*3mS 顯示關源孝閉一次.
num++; //按數序
if(num==8) //每組8個BIT
{num=0;}
}
⑦ c51單片機,請問這兩行代碼作用
這看程序或寫程序必須結合電路,根據電路來分折,才能看懂。你的模擬圖中,是用鎖存器74HC573來鎖存數據的,段控和位控各用一片鎖存器。要鎖存數據,除了P0口要輸出數據,還必須在鎖存器的LE端加一個鎖存脈沖信號,先加高電平,即wela=1; 然後P0口輸出數據,P0=0x00,鎖存器輸入數據,輸出端就得到了這個數據,要鎖存,還要變成低電平,才能保存數據不變, wela=0; 而下一條,P0=0xff;是恢復P0口為高電平,因為鎖存器已經鎖存了數據了,即保持不變了。因數碼管是共陰的,所以,位控要加低電平,即P0=0x00。同理,在鎖存段碼時也是這樣操作的。
純用手機敲的字,請及時採納吧。
⑧ C51單片機 簡單代碼
//TR0 =0;
//TR = 1
這兩條指令簡枯不行。在c語言中//表示解釋說攔枯洞明,單片機敗稿是不認識的!