德國工藝
錶也是其中之一
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
歡迎找我一起玩
eq2是我玩過最有深度的online game
也一直找不到更好的
但國內代理商結束代理後
想玩就必需連線至美國 ~_~
只好找找有點相同的onlie game
而World of Warcraft就是我目前所在玩的
所在伺服有二個,一個PVP,一個PVE
PVE那個沒有在玩了
目前比較常在PVP玩
伺服:血之谷
角色:輕風浮雲~戰
角色:Capoeira~獵
角色:德森密羊奶粉~小D
歡迎找我一起玩
AT89S5X EASY KEY SCAN USER POLLING
做一個簡易KEY
1個IO做1個輸入
使用POLLING的方式
如此即可處理彈跳問題
又不會讓程式停下來
感覺寫的不是很好
如果有人發現更好的方法
請告訴我 謝謝
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圈
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有抖動
做一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
因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
10/07/2008
Hinet廣告
更新了blog的頁式
也就順便看看過去自已拍的照片
連結剛點下去~~~ooxx啊
怎麼有廣告......
上網查了一下
原來hinet的廣告用了新方法
難怪舊的語法沒用了
所謂道高一尺魔高一丈........XD
那就加入新的方法來擋掉吧 :P
在網頁的最上方加入
也就順便看看過去自已拍的照片
連結剛點下去~~~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
About Mido
也不敢說 MIDO WATCH 有多好
網路上的評價也是一半一半
但吸引我的是 剛進入網頁的那一個大大的警告
證明了 他們的手錶是嚴格控管
90年的歷史 雖然比不上百年歷史的錶廠
卻一直有自已的特點
詳細的就請自已去它們網站看囉
而這次我所買的是 MIDO M8600.4.18.8
第一次的低價位 機械錶 就獻給 MIDO
打算戴個5年 5年後要向中價位的錶邁進 XDDDDD
以下是照片........(其實這是炫耀文啦 XDDD
網路上的評價也是一半一半
但吸引我的是 剛進入網頁的那一個大大的警告
證明了 他們的手錶是嚴格控管
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
終於敗下去了
買下了第一隻機械錶
原本是想在三家錶廠間選一家
分別是:
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
終於敗下去了
訂閱:
文章 (Atom)