導航:首頁 > 操作系統 > 單片機0x06怎麼算出來的

單片機0x06怎麼算出來的

發布時間:2022-07-07 17:25:20

單片機簡單C語言問題,實現一個個位加法計算器

你的問題應該出現在鍵盤處理不完善造成的,稍微修改了一下你試試。
#include <reg52.h>
#define uchar unsigned char
#define unit unsigned int
#define OPdata P0 //十位數據口
#define OPdata1 P1//個位數據口
sbit se0=P3^6;//十位選擇
sbit se1=P3^7;//個位選擇
sbit Q=P2^6;
sbit W=P2^5;
sbit E=P2^4;
uchar cis; //按下鍵盤次數
uchar jia1; //加數1
uchar jia2; //加數2
uchar z; //中轉數
uchar shi; //十位數
uchar ge; //個位數
uchar s; //解碼結果
uchar j; //解碼結果
uchar sum; //加法結果
uchar keytemp;
void judge(uchar m) //數碼顯像管解碼
{
switch (m)
{
case 0: s=0x3F; break;
case 1: s=0x06; break;
case 2: s=0x5B; break;
case 3: s=0x4F; break;
case 4: s=0x66; break;
case 5: s=0x6D; break;
case 6: s=0x7D; break;
case 7: s=0x07; break;
case 8: s=0x7F; break;
case 9: s=0x6F; break;
}
}
void judge1(uchar h) //十位數碼顯像管解碼
{
switch (h)
{
case 0: j=0x3F; break;
case 1: j=0x06; break;
}
}
void judgecis()
{
if (cis==1)
{
jia1=z;
ge=z;
shi=0;
}
else if (cis==2)
{
jia2=z;
ge=z;
shi=0;
cis=0;
}
}
void jiafa(uchar m,uchar n) //加法
{
sum=m+n;
if (sum>=10)
{
ge=sum-10;
shi=1;
}
else
{
ge=sum;
shi=0;
}
}

void main()
{
cis=0;
jia1=0;
jia2=0;
shi=0;
ge=0;
s=0;
j=0;
P2=0XFF;
se0=0;//開啟十位
se1=0;//開啟個位
OPdata=0x3f;//十位
OPdata1=0x3f;//個位
while (1)
{
Q=0;
keytemp=P2;
switch (keytemp)
{
case 0xbb: z=3; cis++;while(P2==0xbb); break;
case 0xbd: z=6; cis++;while(P2==0xbd); break;
case 0xbe: z=9; cis++;while(P2==0xbe); break;
case 0xb7: //等於號
jiafa (jia1,jia2); cis=0; break;
}
Q=1;
W=0;
keytemp=P2;
switch (keytemp)
{
case 0xde: z=8; cis++;while(P2==0xde); break;
case 0xdd: z=5; cis++;while(P2==0xdd); break;
case 0xdb: z=2; cis++;while(P2==0xdb); break;
case 0xd7: z=0; cis++;while(P2==0xd7); break;
}
W=1;
E=0;
keytemp=P2;
switch (keytemp)
{
case 0xee: z=7; cis++;while(P2==0xee); break;
case 0xed: z=4; cis++;while(P2==0xed); break;
case 0xeb: z=1; cis++;while(P2==0xeb); break;
}
judgecis();
judge(ge);
OPdata1=s;
judge1(shi);
OPdata=j;
E=1;
}
}

② 單片機加法運算

你的問題應該出現在鍵盤處理不完善造成的,稍微修改了一下你試試。 #include #define uchar unsigned char #define unit unsigned int #define OPdata P0 //十位數據口 #define OPdata1 P1//個位數據口 sbit se0=P3^6;//十位選擇 sbit se1=P3^7;//個位選擇 sbit Q=P2^6; sbit W=P2^5; sbit E=P2^4; uchar cis; //按下鍵盤次數 uchar jia1; //加數1 uchar jia2; //加數2 uchar z; //中轉數 uchar shi; //十位數 uchar ge; //個位數 uchar s; //解碼結果 uchar j; //解碼結果 uchar sum; //加法結果 uchar keytemp; void judge(uchar m) //數碼顯像管解碼 { switch (m) { case 0: s=0x3F; break; case 1: s=0x06; break; case 2: s=0x5B; break; case 3: s=0x4F; break; case 4: s=0x66; break; case 5: s=0x6D; break; case 6: s=0x7D; break; case 7: s=0x07; break; case 8: s=0x7F; break; case 9: s=0x6F; break; } } void judge1(uchar h) //十位數碼顯像管解碼 { switch (h) { case 0: j=0x3F; break; case 1: j=0x06; break; } } void judgecis() { if (cis==1) { jia1=z; ge=z; shi=0; } else if (cis==2) { jia2=z; ge=z; shi=0; cis=0; } } void jiafa(uchar m,uchar n) //加法 { sum=m+n; if (sum>=10) { ge=sum-10; shi=1; } else { ge=sum; shi=0; } } void main() { cis=0; jia1=0; jia2=0; shi=0; ge=0; s=0; j=0; P2=0XFF; se0=0;//開啟十位 se1=0;//開啟個位 OPdata=0x3f;//十位 OPdata1=0x3f;//個位 while (1) { Q=0; keytemp=P2; switch (keytemp) { case 0xbb: z=3; cis++;while(P2==0xbb); break; case 0xbd: z=6; cis++;while(P2==0xbd); break; case 0xbe: z=9; cis++;while(P2==0xbe); break; case 0xb7: //等於號 jiafa (jia1,jia2); cis=0; break; } Q=1; W=0; keytemp=P2; switch (keytemp) { case 0xde: z=8; cis++;while(P2==0xde); break; case 0xdd: z=5; cis++;while(P2==0xdd); break; case 0xdb: z=2; cis++;while(P2==0xdb); break; case 0xd7: z=0; cis++;while(P2==0xd7); break; } W=1; E=0; keytemp=P2; switch (keytemp) { case 0xee: z=7; cis++;while(P2==0xee); break; case 0xed: z=4; cis++;while(P2==0xed); break; case 0xeb: z=1; cis++;while(P2==0xeb); break; } judgecis(); judge(ge); OPdata1=s; judge1(shi); OPdata=j; E=1; } }

③ 單片機定時

1、51單片機12M晶振下一個機器周期是1us;
2、TMOD=0X02,說明定時器0工作在方式2下(自動重裝初值)。TL0每個機器周期+1,當其值計數達到255(0xFF)後,再來一個機器周期+1時產生溢出(0x100),由此引發定時中斷,同時單片機自動將TH0的值再次賦給TL0繼續開始下一輪計時。
3、TL0的初值取6,所以經過250個計數周期後TL0的值將達到256(0x100溢出),產生中斷。
250*1us = 250us =0.25ms。

賦初值可以這樣理解並賦值:TH0 = TL0 = 256-250;( =6)

④ 會單片機的講講下TMOD=0X06中0是定時器0,6是工作方式6嗎

區別是tmod中有8bit
tmod
|=
0x01
這樣第2~8bit原來是什麼還是什麼,不影響,第1bit賦值為1;
tmod=0x01
這樣是給2~8bit賦值為0,第1bit賦值為1。
51單片機是對所有兼容intel
8031指令系統的單片機的統稱。該系列單片機的始祖是intel的8031單片機,後來隨著flash
rom技術的發展,8031單片機取得了長足的進展,成為應用最廣泛的8位單片機之一,其代表型號是atmel公司的at89系列,它廣泛應用於工業測控系統之中。很多公司都有51系列的兼容機型推出,今後很長的一段時間內將佔有大量市場。51單片機是基礎入門的一個單片機,還是應用最廣泛的一種。需要注意的是52系列的單片機一般不具備自編程能力。

⑤ 單片機中0x6=0x60嗎

是06不是60,如果你用過WIN系統自帶的計算器,就會發現在十六進制模式下,只能輸入6而不能輸入06,二進制也是一樣,比如要輸入0001,就只顯示1,建議玩一下電腦里的這個計算器,2--10--16之間的轉換真的很方便的。

⑥ 單片機中 0x06代表1;0x5b代表2 這是怎麼算的。。。單片機初學者--

如下圖:數碼管8位一般定義為:DPGFEDCBA

BC亮表示1,即00000110=0x06;

ABGED亮表示2即01011011=0x5b;

依次類推,明白了嗎?

⑦ 在單片機里。怎麼計數。

#include<reg51.h>
#define uchar unsigned char
uchar number;
void t0isr() interrupt 1
{
number++;
}
main()
{
TMOD=0x06;//定時器0工作模式2計數器方式。P3.4為脈沖輸入口
TH0=0xff;
TL0=0xff;
ET0=1;
TR0=1;
EA=1;
number=0;
while(1)
{
switch(number)
{
case 1:
case 2:
........
default:number=0;break;

}
}
}

⑧ 51單片機1602液晶屏 0x0c和0x06是什麼意思,為什麼這么表示

你說的是在給1602初始化的時候,要寫兩個命令字,
0x0c和0x06就是兩個命令字。
前面的0x是表示為十六進制數。

⑨ 計算題:弱弱地問一下單片機中「~0x3f&0x7f,~0x06&0x7f」運算值各是多少

&這個符號是按位與的運算
~這個符號為取反
~0x3f&0x7f
=0xc0&0x7f
=0x40

~0x06&0x7f
=0xf9&0x7f
=0x79

⑩ 單片機中16進制數0x06是如何算出來的

根據二進制轉換來計算的。

先弄清楚數制的轉換吧。

二進制,十進制,16進制。

閱讀全文

與單片機0x06怎麼算出來的相關的資料

熱點內容
進入組策略的命令 瀏覽:137
python數據結構和內存 瀏覽:25
python軟體功能簡介 瀏覽:784
外國程序員一般多少歲退休 瀏覽:917
怎麼看linux和時間伺服器 瀏覽:680
程序員搞笑花名 瀏覽:501
dota2怎麼設置國服伺服器地址 瀏覽:212
單片機高電平驅動 瀏覽:115
ios多選文件夾 瀏覽:909
加強行車調度命令管理 瀏覽:243
伺服器已禁用什麼意思 瀏覽:150
部隊命令回復 瀏覽:755
神奇寶貝伺服器地圖怎麼設置 瀏覽:382
加密演算法輸出固定長度 瀏覽:862
程序員去重慶還是武漢 瀏覽:121
伺服器如何撤銷網頁登錄限制 瀏覽:980
微信公眾平台php開發視頻教程 瀏覽:628
怎麼看蘋果授權綁定的app 瀏覽:255
壓縮機單級壓縮比 瀏覽:380
linux測試php 瀏覽:971