❶ 用c語言編寫,單片機LED燈並用定時器延時,每隔0.5秒使LED依次點亮
#include"reg51.h"
sfrAUXR=0x8e;//如果是用的AT89C51,把這句刪了
sbitled=P1^0;//定義LED為P10,可以改為其他IO
unsignedcharjishi;
voidTimer0Init(void)//50毫秒@12.000MHz
{
AUXR&=0x7F;//定時器時鍾12T模式
TMOD&=0xF0;//設置定時器模式
TL0=0xB0;//設置定時初值
TH0=0x3C;//設置定時初值
TF0=0;//清除TF0標志
TR0=1;//定時器0開始計時
EA=1;//開總中斷
}
voidmain()
{
Timer0Init();//初始化定時器
while(1);
}
voidtm0_isr()interrupt1//50毫秒中斷一次
{
jishi++;
if(jishi>10)//中斷十次之後
{
jishi=0;//重置計時
led=!led;//取反LED狀態。
}
}
❷ 單片機取反符號~和!的區別,求教。
他們的區別如下:
1、!它返回的值只有兩種狀態0或者1;
2、~是按二進制位取反它的返回值有多種,具體取決於具體數值。
如果在單片機上一個位元組8位分別控制8個埠,假設無符號數初始值為1,第1個埠開其它全關。!後埠就全關了,而~後是第1個埠關,其它全開。
❸ c語言中的取反
這不叫取反!先把數字轉換成字元串,調整字元串位置,然後轉換成數字輸出。
❹ 求程序C語言LED開關 一個LED一個按鈕按一下長開 再按一下關
寫一個給你把,51的吧
#include
"at89c51.h"
//P1.0
為按鍵輸入端,上拉電阻,按鍵接地
//P1.1
為按鍵輸出端,低電平有效
//晶振頻率為4M其他頻率請調整延時
void
main(void)
{
unsigned
char
a,b;
p1^0=1;
//作為按鍵輸入,在准雙向IO口中應該置位
p1^1=1;
//關閉LED
while(1)
{
if(p1^0==0)
{
for(a=20;a>0;a--)
for(b=250;b>0;b--);//去抖
if(p1^0==0)
{
wait://按鍵已經按下
if(p1^0==1)
{
//按鍵放開
p1^1=~p1^1;//led狀態取反,就一亮一滅的了
}
else
goto
wait;//等待放開按鍵
}
}
}
}
❺ 您好,老師,請問你寫的單片機c語言里 P1 =~Led;波折號~在這里是什麼意思,謝謝
取反的意思,比如原來LED賦給1,取反後變0,完成高低電平的轉化
❻ C語言中的取反是什麼意思啊
我感覺是這么回事,0x11二進制是表示是00010001,~之後是11101110,轉化為十六進制後0xEE,這是在TC中整形2個位元組,而在VC中整形是4個位元組,所以 0x11轉化為二進制時前面應該在補八個零,即0000000000010001~後為1111111111101110轉為為十六進制後就為0xFFEE了。
❼ 單片機C語言里的取反怎麼用
對一個數取反用符號:~ 比如對變數x取反:~x;
對一「位」取反用符號:! 比如對位變數flag取反:!flag;
❽ 求程序C語言LED開關 一個LED一個按鈕按一下長開 再按一下關
寫一個給你把,51的吧
#include "at89c51.h"
//P1.0 為按鍵輸入端,上拉電阻,按鍵接地
//P1.1 為按鍵輸出端,低電平有效
//晶振頻率為4M其他頻率請調整延時
void main(void)
{
unsigned char a,b;
p1^0=1; //作為按鍵輸入,在准雙向IO口中應該置位
p1^1=1; //關閉LED
while(1)
{
if(p1^0==0)
{
for(a=20;a>0;a--) for(b=250;b>0;b--);//去抖
if(p1^0==0)
{
wait://按鍵已經按下
if(p1^0==1)
{
//按鍵放開
p1^1=~p1^1;//led狀態取反,就一亮一滅的了
}
else goto wait;//等待放開按鍵
}
}
}
}
❾ 單片機C語言中比如led=~led,波浪線什麼意思
~在這里是按位取反的意思。
按位取反是C語言位操作的一種,其操作符為~。該操作為單目操作,即只有一個操作數。
~與其後的數值或變數相結合,執行取反計算。
取反是按照二進制位進行計算的,當原操作數的第i位為0時,結果的第i位為1;否則該位值為0。
比如,char a = 0x12;
0x12轉為二進制位 B0001 0010
其按位取反的結果為B1110 1101
於是 ~a = 0xED。