Re: [問題] 同樣輸出pulse想從不同腳位送出..

看板ASM作者 (ksmrt)時間10年前 (2013/09/10 12:26), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/7 (看更多)
printf()功能很強大, 但也因此又慢(執行速度)又大(code size). 若程式只需要單純的印出字串, 通常做法是寫一個精簡版本替代printf(), void out_str(char * s) { while(*s) { putchar(*s); ++s; } } 接下來只要把程式中的printf改成out_str即可 void main(void) { out_str("hello, world"); } ※ 引述《mosquito520 ( )》之銘言: : → ksmrt0123:我很疑惑怎樣的code是'醜'但效能好的? 請問有例子嗎? 09/10 00:18 常見的寫法 #include <stdio.h> #include <8051.h> void putchar(char ch){ while(!TI); TI = 0; SBUF = ch; } void main(void) { printf("hello, world"); } SDCC編譯出來的結果 Other memory: Name Start End Size Max ---------------- -------- -------- -------- -------- PAGED EXT. RAM 0 256 EXTERNAL RAM 0 65536 ROM/EPROM/FLASH 0x0000 0x0993 2452 65536 比較醜的寫法 __code char array[] = {"hello, world"}; void putchar(char ch){ while(!TI); TI = 0; SBUF = ch; } void main(void) { char i; i=0; while(array[i] != '\0') { putchar(array[i]); i++; } } SDCC編譯出來的結果 Other memory: Name Start End Size Max ---------------- -------- -------- -------- -------- PAGED EXT. RAM 0 256 EXTERNAL RAM 0 65536 ROM/EPROM/FLASH 0x0000 0x0095 150 65536 以上隨便是隨便撈個compiler來用 隨便想個可能差比較多的範例 所以寫寫 僅供參考:) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.34.187.83 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.84.232.180 ※ 編輯: ksmrt0123 來自: 219.84.232.180 (09/10 12:34)
文章代碼(AID): #1IBfznl0 (ASM)
討論串 (同標題文章)
文章代碼(AID): #1IBfznl0 (ASM)