2/02/2008

AT89S51

剛開始進入單晶片世界是工作上的關係
一開始使用的是atmel mega系列
一開始有人帶,所以很快的就學會了
但使用的是C不是組語。


換工作後,就改玩 SUNPLUS GLP162002
使用的是組語和C,後來想想
大家好像都是由8051系列開始玩起的
那我怎可跳過51呢?
於是就網上找了許多資料,線路圖
跑去買了一些材料,DIY,焊了二天
做出了二片板子和一片電源模組。
還蠻好玩的:P
先貼個照片有空在補上電路圖。

1版

後來又加上個開關
2版

都是直接使用USB供電,ISP DOWNLOAD,DOWNLOAD完後,調JUMP在接IO PORT就能使用了
電源模組 可輸入DC6~16V 轉為DC5V USB接頭


電路圖 PROTEL DXP 格式
電路圖 PDF 格式

2/01/2008

PWM USER TIMER MODE (SOFTWARE MODE)

如果硬體沒有提供 PWM 輸出,則必需自已用 TIMER
來模擬做出 PWM ,軟體可分為二種做法。
精準(中斷法)
不精準(系統LOOP)


當使用 SYSTEM LOOP 需注意其它程式的執行時間,
其它程式執行時間過長,則會延長 PWM 的輸出,
或是可在其它程式中間插入 PWM 函式,用以檢查
是否以過週期。

Ex:假設需要在 50ms 週期,固定 20ms 的輸出則

output = high;
unsigned int timer_count;

timer_interrupt( )
{
timer_count ++;
}
while(1)
{
if(timer_count < 50)
{
if(timer_count < 20)
output=high;
else
output=low;
}
else
{
timer_count=0;
output=high;
}
}

GPL162002 PWM USER HARDWARE (FORMULA)

經過幾天的試驗發現GPL162002 programming guild
的硬體PWM 公式好像有點問題,或許是我資質不夠吧
看不太懂它的說明,無法套用它的公式。


以下是我的速算公式:

Timer?_Preload = T_time * source clock /65536-X ;
Timer?_CCP = Timer?_Preload + t_timer * source clock;

Ex: 假設需要在 500ms 週期,固定 200ms 的輸出則
define source clock 8192

Timer?_Preload = 0.5(500ms) * 8192 /65536-X
X = 61440 (0xF000)
Timer?_CCP = 61440 + 0.2(200ms) * 8192;
= 63078.4 (0xF666)

Timer?_Preload = 0xF000;
Timer?_CCP = 0xF666;

1/23/2008

四年

停了近三個月吧。

這段四年的感情也停的有點平靜,
或許是因為在一起太久了,
所以像是朋友吧。


也未曾想到居然會是我先開口,
未曾見面談過,只在電話中說明,
能感到妳覺的很意外,卻也帶著平靜,
而當你想多說什麼時,我想我也知道你要說什麼,
所以,就這樣吧。

11/02/2007

陌生的台北

這次又離家了
因為工作的關係
來到了台北


好像我的一生就是不停的離開家裡
出生時,我在鄉下由外婆扶養
高中時,我一個人在外半工半讀
退伍後,在外面住了一年才回家
如今,又一個人來到了台北

陌生的街道,陌生的人群,陌生的台北
感到寂寞!?或許該說是我習慣了寂寞。

對於不確定的未來,曾有過害怕,
不安,因為背負了太多。

10/03/2007

悲情英雄

過去,每當我們受到刺心之痛
或是一段感情的消逝
總是習慣的讓自已成為悲情人物
訴說著自已如何的不幸
如何的不快樂
如何的辛苦付出,卻換來這樣的結果
以得到更多人的安慰。


其實,事情發生了
每個人一定都會難過,痛苦
適時的找個朋友訴苦,一定會比較好過
但,請勿讓自已就沉溺在這樣的世界中
久了,總是會讓人反感。

如此的折磨自已,家人,朋友
何苦呢?
重要的是,你該自已站起來,走出痛苦
如何對自已更好,活的更好
才是未來的方向。