10/27/2008

德國工藝

德國工藝
錶也是其中之一
STOWA,ZEPPELIN,JUNKERS,A.LANGE,GLASHUTTE,NOMOS


和許多名錶相較之下
最常聽到的應是瑞士錶
而我也是最近才看到德國錶
才發現原來也是不錯的 0.0

而目前台灣只有代理高檔的德國錶
所以想入門款就只能自已上網訂 ~_~

所以下一隻錶就轉移目標 xd
打算買隻德國錶來戴
也沒半法寫心得 = =
因為我還沒實際過看,只有看過圖片
不過等我入手還要一段時間吧 XDDDDD
目前就看圖解毒吧 囧

Stowa
Pointtes(ZEPPELIN & JUNKERS)

10/22/2008

World of Warcraft

這是我最近在玩的online game
eq2是我玩過最有深度的online game
也一直找不到更好的


但國內代理商結束代理後
想玩就必需連線至美國 ~_~
只好找找有點相同的onlie game

而World of Warcraft就是我目前所在玩的
所在伺服有二個,一個PVP,一個PVE
PVE那個沒有在玩了
目前比較常在PVP玩

伺服:血之谷
角色:輕風浮雲~戰
角色:Capoeira~獵
角色:德森密羊奶粉~小D

歡迎找我一起玩

原來我的心還不夠大

當你認識了新朋友
但他的說話態度,做事方式
讓你覺的討厭
你會如何選擇?


ONLINE GAME就像一個小社會
每個人都是真實的
差別只在看不到對方的臉孔
最近遇到了和我很不對味的傢伙
相處了一些時間後,我選擇黑名單
直到他退公會了 0.0 我才發現
他的所做所為或許讓人討厭
但其他人卻能包容
而我........
原來我的心還不夠大...要改進

AT89S5X EASY KEY SCAN USER POLLING

做一個簡易KEY
1個IO做1個輸入
使用POLLING的方式
如此即可處理彈跳問題
又不會讓程式停下來
感覺寫的不是很好
如果有人發現更好的方法
請告訴我 謝謝



/*
AT89SX EASY KEY FIRST VER 1.0
KEY PORT P2
KEY INPUT P2_0~P2_3
USER POLLING
SHOW LED FOR PORT P0

BRIAN @ taiwan
*/

#include "AT89X52.H"

#define Key_port P2 //設定要讀取的port(set your read port)
#define Mark_Key 0x0F //設定要mark的key(set your mark key)
#define DebounceReg 20//設定初始化彈跳時間 (set your default debounce time)

#define b_Debounce 0x01 //set debounce flag for key_flag
#define b_Pressed 0x02 //set pressed flag for key_flag
#define b_Release 0x04 //set release flag for key_flag

void sys_init(void); //system_init function
char GetKey(void); //get press key number
unsigned char Get_KeyStatus(void); //get press key or release key
void Key_Loop(void); //scan key user polling

char Key_flag; //0x01 = Debounce 0x02 =press 0x04= release
char R_DebounceReg; //KEY DEBOUNCE COUNG
char R_KeyBuffer; //KEY BUFFER SAVE INPUT KEY
char First_key; //memory first pressed key
char Port_buffer; // memory port status

void main(void)
{
char PressKey,KeyStatus;
char Led_count;

sys_init();

Led_count=0;

while(1)
{
KeyStatus = Get_KeyStatus();

if(KeyStatus==0x02) //pressed key
{
PressKey=GetKey();
switch(PressKey)
{
case 1:
P0=0x1<<Led_count;
P0= ~P0;
Led_count++;
if(Led_count>7)
Led_count=0;
break;
//...........
}

}
else if(KeyStatus==0x04) //release key
{
PressKey=GetKey();
switch(PressKey)
{
default:
P0=0xFF;
break;
//...........
}
}

Key_Loop();
}

}

void sys_init(void)
{
Key_flag = 0;
R_DebounceReg = 0;
R_KeyBuffer = 0;
First_key = 0;
Port_buffer=0;
//ALL SYSTEM REG SET
Key_port=0x00;

}

void Key_Loop(void)
{
char Key;
char Key_chang;

if(Key_flag & b_Debounce)
{
R_DebounceReg--;
if(R_DebounceReg != 0) //debounce 時間內就離開 以過了debounce 就在讀取一次
return;
}

Key_chang = Key_port & Mark_Key; //讀取input key port

if(Key_chang != Port_buffer) //當port內的值有改變 而且是key 值
{
Port_buffer = Key_port; //memory port value
First_key = Port_buffer & Mark_Key; //memory user touch key
Key_flag = b_Debounce; //set flag
R_DebounceReg = DebounceReg; //set debounce time value
return;
}

if(Key_flag & b_Debounce) //當debounce 結束後
{
Key = Key_port & Mark_Key;//在取一次port的值
if(Key & First_key)//二次相同 , 設為按下
{
Key_flag = b_Pressed; //set flag
R_KeyBuffer = Key; //set touch key value
}
else
{
Key_flag = b_Release; //set flag
}
}
else
{
Key_flag=0;
}

}

unsigned char Get_KeyStatus(void)
{
return Key_flag;
}

char GetKey(void)
{
return R_KeyBuffer;
}

10/17/2008

AT89S5X STEPPER MOTOR

使用89S5X控制STEPPER MOTOR
MOTOR有點不是很精準 0.0
203步才轉1圈
此例是正轉1圈停0.5S
在反轉1圈



/*
First ver 1.0
for step motor test
motor 14pm-m011-g1st 0.2a 1.8deg 5v
user uln2003a
P1_0 = A
P1_1 = B
P1_2 = /A
P1_3 = /B

51 TO 2003a TO MOTO
P1_0---1 16---MOTO A(yellow)
P1_1---2 15---MOTO B(blue)
P1_2---3 14---MOTO /A(red)
P1_3---4 13---MOTO /B(orange)
8=-v 9=+5v MOTO black=+5v

Brian @Taiwan
*/

#include "AT89X52.H"

void sys_init(void);

int time_ms;
int time_1s;


void main(void)
{
unsigned char step;
char motor[4]={8,4,2,1};
char motor_index;
char dir;

sys_init();

time_ms=0;
time_1s=0;
P0_1=1;
TR0=1;
step=0;
dir=0;
motor_index=0;

while(1)
{
if(time_1s >3)
{
if(step<=203)
{
P1=motor[motor_index];
step++;
if(dir)
{
motor_index++;
if(motor_index>3)
motor_index=0;
}
else
{
motor_index--;
if(motor_index<0)
motor_index=3;
}
}
else
{
while(time_1s!=500);
step=0;
dir=~dir;
}
time_1s=0;

}
}
}

void sys_init(void)
{
//ALL SYSTEM REG SET
IE = 0x82; //USER INTERRUPT TIME0
TMOD = 0x02; //SET TIME 0 MODE
TH0 = 256-200; //SET RELOAD VALUE
TL0 = 256-200; // FAST VALUE
}

void Time0_int(void)interrupt 1
{
// TIME 0 MODE2 AUTORELOAD USER INTERRUPT
// 1000 = 0.1S(100ms), 10000 = 1S(1000ms), 100=0.01S(10ms) ,10=0.001S(1ms)
time_ms++;
if(time_ms==10)
{
time_ms=0;
time_1s++;
}
}

AT89S5X PWM

使用上一篇所寫的TIME
做一PWM使LED漸亮漸暗
如拉長DUTY超過30ms 會發現led有抖動



/*
First ver 1.0
Brian @Taiwan
*/
#include "AT89X52.H"

//for time 0 pwm test 30ms

void sys_init(void);

int time_ms;
int time_1s;

void main(void)
{
char duty;
char i;

sys_init();

time_ms=0;
time_1s=0;
P0_1=1;
TR0=1;
i=1;
duty=0;

while(1)
{
if(time_1s <30)
{
if(time_1s < i)
P0_1=0;
else
P0_1=1;
}
else
{
time_1s=0;
if(i>30)
duty=~duty;
if(i<=0)
duty=~duty;
if(duty)
i--;
else
i++;
}
}
}

void sys_init(void)
{
//ALL SYSTEM REG SET
IE = 0x82; //USER INTERRUPT TIME0
TMOD = 0x02; //SET TIME 0 MODE
TH0 = 256-200; //SET RELOAD VALUE
TL0 = 256-200; // FAST VALUE
}

void Time0_int(void)interrupt 1
{
// TIME 0 MODE2 AUTORELOAD USER INTERRUPT
// 1000 = 0.1S(100ms), 10000 = 1S(1000ms), 100=0.01S(10ms) ,10=0.001S(1ms)
time_ms++;
if(time_ms==10)
{
time_ms=0;
time_1s++;
}
}

AT89S5X Time

使用keil C寫一準確Time
因C無法像組語精準
所以使用autoreload and interrupt
使用視波器量測後,準度尚可接受
最小可達1ms



/*
First ver 1.0
sys_clock = 24 MHz
24000000/12=2MHz
1/2MHz=0.0000005s
0.0000005*200=0.0001s
Brian @Taiwan
*/
#include "AT89X52.H"

void sys_init(void);

int time_ms;
int time_1s;

void main(void)
{
sys_init();
time_ms=0;
time_1s=0;
P1_2=1; //Led Output
TR0=1;

while(1)
{
if(time_1s==1)
{
P1_2=~P1_2;
time_1s=0;
}
}
}

void sys_init(void)
{
//ALL SYSTEM REG SET
IE = 0x82; //USER INTERRUPT TIME0
TMOD = 0x02; //SET TIME 0 MODE
TH0 = 256-200; //SET RELOAD VALUE
TL0 = 256-200; // FAST VALUE
}

void Time0_int(void)interrupt 1
{
// TIME 0 MODE2 AUTORELOAD USER UNTERUPT
// 1000 = 0.1S, 10000 = 1S, 100=0.01S ,10=0.001S
time_1ms++;
if(time_ms==10000)
{
time_ms=0;
time_1s=1;
}
}

10/15/2008

簡單!滿足!快樂!

在有限的能力裡 做自已喜歡的事
讓自已享受每件事


不為無意義的事執著
輕鬆看待每件事
目前是如此生活 :p
快樂許多

薄酒萊

今年的薄酒萊新酒開始預訂了
每每看到就會心動
說不上是行家
也品不出酒的好壞
單純的只是喜歡葡萄酒


想起前幾次訂貨的經驗
當大家開始狂歡品酒時
我還在家裡等待通知........
或許晚個幾天拿到沒什麼關係
但心境也就有點不同了
那......還是訂吧 :P

10/07/2008

Hinet廣告

更新了blog的頁式
也就順便看看過去自已拍的照片

連結剛點下去~~~ooxx啊
怎麼有廣告......
上網查了一下
原來hinet的廣告用了新方法
難怪舊的語法沒用了


所謂道高一尺魔高一丈........XD
那就加入新的方法來擋掉吧 :P

在網頁的最上方加入

</script>
<script>try{
var h_frames=window.top.document.getElementsByTagName("frameset");
var h_frames_num=h_frames.length;
for(var i=0;i<h_frames_num;i++)
{
if(h_frames[i].id.indexOf("MywebFrameSet")!=-1)
{
h_frames[i].cols = "*, 0";
}
}
}catch(e){}
</script>

10/06/2008

機械錶

買了第一隻的入門級機械錶
上網看了許多的文章才發現
原來機械錶還真是有很多要注意的地方


1.時間最好順時針轉
2.日期要在指針都在下半部的時候才能調
3.約2年上下洗一次油
3.1 齒輪摩擦所產生的金屬粉塵需要清潔
3.2 錶內ㄉ潤滑油因為時間劣化及帶有上項的粉塵必須更換

4.MIDO 錶因Aquadura軟木塞錶冠密閉系統,約2~3年軟木塞會有老化問題需更換

需注意事項會不定期更新。

About Mido

也不敢說 MIDO WATCH 有多好
網路上的評價也是一半一半

但吸引我的是 剛進入網頁的那一個大大的警告
證明了 他們的手錶是嚴格控管
90年的歷史 雖然比不上百年歷史的錶廠
卻一直有自已的特點
詳細的就請自已去它們網站看囉


而這次我所買的是 MIDO M8600.4.18.8
第一次的低價位 機械錶 就獻給 MIDO
打算戴個5年 5年後要向中價位的錶邁進 XDDDDD

以下是照片........(其實這是炫耀文啦 XDDD




MIDO WATCH

終於下定決心
買下了第一隻機械錶


原本是想在三家錶廠間選一家
分別是:
1.ORIS:Oris Classic 01 733 7578 4064-07 5 18 11 (價位剛好
2.TISSOT: PRC 100 Automatic Chrono Valjoux (有點高過預算
3.SEIKO:Premier SRG001J2 (價位剛好

卻在無意見發現了 MIDO...
第一眼還在懷疑之中
想說怎沒看過這家公司 0.0
背後傳來一陣謎之音:這家公司做的很不錯 XD
回家上網查了一下
在同等價位的錶款中
它們的錶還算不錯

親身試戴 比較過後
和店員殺價.......XD
終於敗下去了