Re: [問題] 二進制的累加!
※ 引述《hylkevin (Kevin)》之銘言:
: ※ 引述《apol1033 (Frog )》之銘言:
: : 太久沒看C++忘記如何用指令了= ="
: : 是用C++來控制8051單晶片
: : 想問一下如果想輸出一個訊號來控制8個LED
: : 他的變化是
: : 00000001
: : 00000011
: : 00000111
: : 00001111
: : 00011111
: : 00111111
: : 01111111
: : 11111111
: : 01111111
: : 00111111
: : 00011111
: : 00000111
: : 00000011=>這邊再跑回最上面
: : 原本是想用二進制然後慢慢加,不過中間的差距不同所以不行用
: : 也想過用陣列,不過也搞不懂怎麼使用
: : 希望有人能幫解惑一下
: unsigned char led_sig=1;
: bool right2left=true;
: while(loop)
: {
// 判斷是否左位移 right2left為真則執行裡面程式碼
: if(right2left)
: {
// 位元左移 最低位元補零
: led_sig<<=1;
// +1使最低位元為1
: ++led_sig;
// 判斷全部位元是否均為1
"否" right2left依然為真 執行00000001至11111111(前半段)
"是" right2left設定為否 跳至else
執行11111111至00000001(後半段)
: if(led_sig==0xff)
: right2left=false;
: }
: else
: {
// 位元右移
: led_sig>>=1;
// 判斷是否為00000001 "真"則設定right2left為"真"
: if(led_sig==1)
: right2left=true;
: }
// 然後程式永遠不會停.
: }
: 我可能會這樣寫
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.118.7.163
※ 編輯: kvykn 來自: 140.118.7.163 (03/16 02:09)
→
03/16 02:12, , 1F
03/16 02:12, 1F
→
03/16 02:15, , 2F
03/16 02:15, 2F
推
03/16 02:18, , 3F
03/16 02:18, 3F
→
03/16 02:20, , 4F
03/16 02:20, 4F
→
03/16 02:33, , 5F
03/16 02:33, 5F
→
03/16 02:35, , 6F
03/16 02:35, 6F
推
03/16 02:40, , 7F
03/16 02:40, 7F
推
03/16 04:06, , 8F
03/16 04:06, 8F
討論串 (同標題文章)