たなか(仮)/日誌/2013-12-10
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[たなか(仮)/日誌]]
**done [#rcd08f23]
counterを設置して一定の時間でルーレット止められるようになった。~
あとは、1回目KEYを押すと数字が回り始めて、2回目KEYを押すと前のcounterを使ってルーレットが止まって、前回作った点滅関数ぶっこんで数字が点滅するよー~
個人的には最初の数字の回転を表示させるかどうかは検討中・・・~
なくてもいいような気もするけど、ないとわかんないような気もする。
**next [#q4fd0ee5]
基本の仕様が出来たので、仕様拡張に移りたいと思う。~
-やりたいことリスト
--スロットの2桁拡張
--スタート、ストップなどのLCD出力?
--ルーレットだし数字当てたい(偶数、奇数判定とか)
もう少し上手くコードかけそうな気がする
**code [#dfebb63c]
KEY=0xA000;
HEX=0xA008;
digit=0;
digitmax=9;
count=0;
zero=0;
int edge[2];
edge[0]=1;
edge[1]=1;
int dec[16];
dec[ 0] = 0x40;
dec[ 1] = 0x79;
dec[ 2] = 0x24;
dec[ 3] = 0x30;
dec[ 4] = 0x19;
dec[ 5] = 0x12;
dec[ 6] = 0x02;
dec[ 7] = 0x58;
dec[ 8] = 0x00;
dec[ 9] = 0x18;
dec[10] = 0x08;
dec[11] = 0x03;
dec[12] = 0x27;
dec[13] = 0x21;
dec[14] = 0x06;
dec[15] = 0x0e;
int edgeDetect(){
edge[1]=edge[0];
edge[0]=(mem[KEY]&0x8)>>3;
if(edge[0]==0)if(edge[1]==1) return 1;
return 0;
}
int segDec(int in){
if (in>0xF) {
return dec[in & 0x0F];
} else {
return dec[in] | 0x80;
}
}
int wait1(){
for(j=0; j< 0x4; j++)
for(k=0; k< 0x7FFF; k++);
}
int wait2(){
for(j=0; j< 0x6; j++)
for(k=0; k< 0x7FFF; k++);
}
void countup(){
if (digit < digitmax) {
digit = digit + 1;
return;
} else {
digit = 0;
}
}
int blinker(int num){
while(1){
wait2();
mem[HEX]=segDec(num);
wait2();
mem[HEX]=0xFF;
}
}
while(1){
mem[HEX]=segDec(zero);
if(edgeDetect()){
while(1){
wait1();
mem[HEX]=segDec(digit);
countup();
if(edgeDetect()){
while(1){
wait1();
mem[HEX]=segDec(digit);
countup();
count++;
if(count==51) blinker(digit);
}
}
}
}
}
終了行:
[[たなか(仮)/日誌]]
**done [#rcd08f23]
counterを設置して一定の時間でルーレット止められるようになった。~
あとは、1回目KEYを押すと数字が回り始めて、2回目KEYを押すと前のcounterを使ってルーレットが止まって、前回作った点滅関数ぶっこんで数字が点滅するよー~
個人的には最初の数字の回転を表示させるかどうかは検討中・・・~
なくてもいいような気もするけど、ないとわかんないような気もする。
**next [#q4fd0ee5]
基本の仕様が出来たので、仕様拡張に移りたいと思う。~
-やりたいことリスト
--スロットの2桁拡張
--スタート、ストップなどのLCD出力?
--ルーレットだし数字当てたい(偶数、奇数判定とか)
もう少し上手くコードかけそうな気がする
**code [#dfebb63c]
KEY=0xA000;
HEX=0xA008;
digit=0;
digitmax=9;
count=0;
zero=0;
int edge[2];
edge[0]=1;
edge[1]=1;
int dec[16];
dec[ 0] = 0x40;
dec[ 1] = 0x79;
dec[ 2] = 0x24;
dec[ 3] = 0x30;
dec[ 4] = 0x19;
dec[ 5] = 0x12;
dec[ 6] = 0x02;
dec[ 7] = 0x58;
dec[ 8] = 0x00;
dec[ 9] = 0x18;
dec[10] = 0x08;
dec[11] = 0x03;
dec[12] = 0x27;
dec[13] = 0x21;
dec[14] = 0x06;
dec[15] = 0x0e;
int edgeDetect(){
edge[1]=edge[0];
edge[0]=(mem[KEY]&0x8)>>3;
if(edge[0]==0)if(edge[1]==1) return 1;
return 0;
}
int segDec(int in){
if (in>0xF) {
return dec[in & 0x0F];
} else {
return dec[in] | 0x80;
}
}
int wait1(){
for(j=0; j< 0x4; j++)
for(k=0; k< 0x7FFF; k++);
}
int wait2(){
for(j=0; j< 0x6; j++)
for(k=0; k< 0x7FFF; k++);
}
void countup(){
if (digit < digitmax) {
digit = digit + 1;
return;
} else {
digit = 0;
}
}
int blinker(int num){
while(1){
wait2();
mem[HEX]=segDec(num);
wait2();
mem[HEX]=0xFF;
}
}
while(1){
mem[HEX]=segDec(zero);
if(edgeDetect()){
while(1){
wait1();
mem[HEX]=segDec(digit);
countup();
if(edgeDetect()){
while(1){
wait1();
mem[HEX]=segDec(digit);
countup();
count++;
if(count==51) blinker(digit);
}
}
}
}
}
ページ名: