|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
去IC設(shè)計(jì)公司應(yīng)聘的一道筆試題! |
| 作者:zcs008 欄目:單片機(jī) |
用匯編程序(隨便)寫一個(gè)LED閃爍子程序,端口為PLED,然后主程序去調(diào)用它, 要求,1、不給用定時(shí)計(jì)數(shù)器,2、不給用軟件延時(shí),系統(tǒng)實(shí)時(shí)行要求高。 各位有什么高見? |
| 2樓: | >>參與討論 |
| 作者: xwj 于 2005/1/3 8:05:00 發(fā)布:
要求,1、不準(zhǔn)你死,2、不準(zhǔn)你活,干活要求勤快 你有什么高見? |
|
| 3樓: | >>參與討論 |
| 作者: xjg1111 于 2005/1/3 8:36:00 發(fā)布:
re 考,是不是腦筋急轉(zhuǎn)彎呀? |
|
| 4樓: | >>參與討論 |
| 作者: 〾⿰⿱⿲⿳ 于 2005/1/3 8:53:00 發(fā)布:
腦筋急轉(zhuǎn)彎:循環(huán)計(jì)數(shù) void led(void) { static unsigned int count; if( ++count > 10000 ){ count = 0; if( PLED )PLED = 0; else PLED = 1; } } main() { ... while(1){ ... led(); } } * - 本貼最后修改時(shí)間:2005-1-3 8:54:10 修改者:〾⿰⿱⿲⿳ |
|
| 5樓: | >>參與討論 |
| 作者: xwj 于 2005/1/3 9:58:00 發(fā)布:
什么叫“軟件延時(shí)”? 所謂軟件就是相對(duì)于硬件而言的 所有的程序都是軟件 用程序?qū)崿F(xiàn)的延時(shí)都是“軟件延時(shí)” 然后要你用“匯編程序(隨便)寫一個(gè)LED閃爍子程序” 還“不給用軟件延時(shí)”? 通常的延時(shí)程序一種是查詢定時(shí)器(或中斷),一種是消耗CPU周期 還有其他方法嗎? |
|
| 6樓: | >>參與討論 |
| 作者: lqnjerry 于 2005/1/3 10:16:00 發(fā)布:
en 也許是直接對(duì)PLED取反,因?yàn)橹鞒绦蜓h(huán)有時(shí)間,這樣沒有特意延時(shí)也可以有延時(shí)的效果。 |
|
| 7樓: | >>參與討論 |
| 作者: zcs008 于 2005/1/3 11:55:00 發(fā)布:
我答的和樓上的一樣 我答的和樓上的一樣,用一個(gè)寄存器計(jì)數(shù),讓主程序運(yùn)行到那里都計(jì)一次, 計(jì)得多少次就讓它取反,想不出還有什么方法了, 也不知對(duì)錯(cuò),結(jié)果公司要我簽約了,當(dāng)然還考了很多東西 |
|
| 8樓: | >>參與討論 |
| 作者: lele樂樂 于 2005/1/3 11:56:00 發(fā)布:
上面的那個(gè)兄弟給出的程序不就完全滿足要求嗎? 或者計(jì)數(shù)主循環(huán)次數(shù)也可以, |
|
| 9樓: | >>參與討論 |
| 作者: zcs008 于 2005/1/3 12:02:00 發(fā)布:
那個(gè)程序可以做到嗎? 說不給用循環(huán)等待的,占了太多CPU時(shí)間, 那個(gè)程序可以做到嗎? |
|
| 10樓: | >>參與討論 |
| 作者: xjg1111 于 2005/1/3 15:54:00 發(fā)布:
〾⿰⿱⿲⿳ 的方法是可以~~ 但跟主程序的執(zhí)行時(shí)間有關(guān)系,~~~ 呵呵,好像只能這樣了~~ |
|
| 11樓: | >>參與討論 |
| 作者: 焊出個(gè)未來 于 2005/1/3 17:47:00 發(fā)布:
我感覺也只能用這個(gè)辦法。 毛病是閃爍的不一定是規(guī)則的。不過題意沒有這個(gè)限制 |
|
| 12樓: | >>參與討論 |
| 作者: minimcu 于 2005/1/4 10:05:00 發(fā)布:
nop指令如何? NOP指令算不算是軟件延時(shí)呢?呵呵,不知道使用最笨的方法,可不可以過關(guān):)? |
|
| 13樓: | >>參與討論 |
| 作者: mailbert 于 2005/1/4 13:23:00 發(fā)布:
! * - 本貼最后修改時(shí)間:2005-1-4 13:57:26 修改者:mailbert |
|
| 14樓: | >>參與討論 |
| 作者: zcs008 于 2005/1/4 19:22:00 發(fā)布:
nop 不行吧,也是要消耗CPU時(shí)間的 nop 不行吧,也是要消耗CPU時(shí)間的 |
|
| 15樓: | >>參與討論 |
| 作者: thua 于 2005/1/4 20:42:00 發(fā)布:
要主循環(huán)提供計(jì)時(shí)吧 |
|
| 16樓: | >>參與討論 |
| 作者: williamL 于 2005/1/5 8:40:00 發(fā)布:
用過零中斷吧 一般過零中斷為10ms一次,閃爍的話,在過零中斷計(jì)數(shù)好了,夠了就翻轉(zhuǎn)一下。 呵呵,好像條件沒說不能用外部中斷吧,并且這樣和實(shí)時(shí)性要求高也沒沖突,還 行吧? |
|
| 17樓: | >>參與討論 |
| 作者: linfeiic 于 2005/1/5 9:50:00 發(fā)布:
也許不是要你一定能編出來! 我覺得這個(gè)題挺活的。也學(xué)是為了考你編程的經(jīng)驗(yàn),如果你編得多的話,可能會(huì)有很多種解法,不管你用哪一種,首先你一定得做出來,其次再看你是如何做得?傊阕龅迷接行庐惥驮饺菀椎玫胶迷u(píng)! 不止我的看法對(duì)不。 |
|
| 18樓: | >>參與討論 |
| 作者: victorymay 于 2005/1/5 10:24:00 發(fā)布:
用整體程序循環(huán)記數(shù) |
|
| 19樓: | >>參與討論 |
| 作者: dragonlong 于 2005/1/5 10:52:00 發(fā)布:
把他當(dāng)成狗,主程序去調(diào)他即可 |
|
| 20樓: | >>參與討論 |
| 作者: afanti 于 2005/1/5 11:48:00 發(fā)布:
re 只要主程序循環(huán)一次的時(shí)間是固定的, 用一個(gè)寄存器來控制閃爍 |
|
| 21樓: | >>參與討論 |
| 作者: cqwangsf 于 2005/1/5 12:59:00 發(fā)布:
PLED!=PLED PLED!=PLED |
|
| 22樓: | >>參與討論 |
| 作者: 阿南 于 2005/1/5 13:46:00 發(fā)布:
應(yīng)該是由主程序去實(shí)現(xiàn)延時(shí),子程序只要給它一個(gè)狀態(tài)標(biāo)志就可以! |
|
| 23樓: | >>參與討論 |
| 作者: wzy_0649 于 2005/1/5 14:06:00 發(fā)布:
觀注中觀注 |
|
| 24樓: | >>參與討論 |
| 作者: wzy_0649 于 2005/1/5 14:08:00 發(fā)布:
觀注中 |
|
| 25樓: | >>參與討論 |
| 作者: wzy_0649 于 2005/1/5 14:20:00 發(fā)布:
我覺得是注重思路,不是讓你簽了,怕的是一個(gè)字寫不來的那種。 |
|
| 26樓: | >>參與討論 |
| 作者: 鈴鐺老大 于 2005/1/5 18:52:00 發(fā)布:
都說不能用延時(shí)指令了,還用NOP |
|
| 27樓: | >>參與討論 |
| 作者: drag00n 于 2005/1/6 10:06:00 發(fā)布:
有這種程序么?既不用定時(shí)器,也不讓軟件延時(shí)? 看門狗也算定時(shí)器了吧 |
|
| 28樓: | >>參與討論 |
| 作者: dengm 于 2005/1/6 12:19:00 發(fā)布:
把 PLED 接在 P1.7, inc p1, 機(jī)器工作在1khz |
|
| 29樓: | >>參與討論 |
| 作者: lj21ic 于 2005/1/6 15:49:00 發(fā)布:
我也覺得用NOP可以,不算軟件延時(shí)的 |
|
| 30樓: | >>參與討論 |
| 作者: yliang 于 2005/1/6 20:27:00 發(fā)布:
呵呵,充分利用主程序的運(yùn)行時(shí)間就行了! 利用主程序的運(yùn)行時(shí)間,控制調(diào)用子程序的頻率! |
|
| 31樓: | >>參與討論 |
| 作者: keqiusuo 于 2005/1/6 20:41:00 發(fā)布:
跑個(gè)OS,建個(gè)閃光的任務(wù)就可以了,CPU找?梢愿珊芏嗍虑,! |
|
| 32樓: | >>參與討論 |
| 作者: williamL 于 2005/1/7 12:22:00 發(fā)布:
主程序的時(shí)間不也是用定時(shí)器來決定的嗎 |
|
| 33樓: | >>參與討論 |
| 作者: ye77 于 2005/1/7 13:10:00 發(fā)布:
使用一個(gè)全局變量做計(jì)數(shù)用 使用一個(gè)全局變量COUNT做計(jì)數(shù)用,設(shè)定初始值, 在LED閃爍子程序中減一,并判斷是否為0. 若為0,端口PLED狀態(tài)反轉(zhuǎn),并重設(shè)COUNT初始值后返回. 若不0,直接返回. |
|
| 34樓: | >>參與討論 |
| 作者: tangqin 于 2005/1/7 19:45:00 發(fā)布:
無聊 |
|
| 35樓: | >>參與討論 |
| 作者: renmingcan 于 2005/1/7 20:35:00 發(fā)布:
這個(gè)很簡(jiǎn)單啊! 這個(gè)很簡(jiǎn)單!和單片機(jī)一樣,“與”或者“或”運(yùn)算 |
|
| 36樓: | >>參與討論 |
| 作者: whpoplar 于 2005/1/8 14:06:00 發(fā)布:
鉆牛角尖! 實(shí)現(xiàn)延時(shí)途徑只有兩種,無非是軟件和硬件。兩者都不用怎么實(shí)現(xiàn)得了? 各位給出的也只是軟件上隱性的延時(shí)而已。 你公司出這樣無聊的題,那個(gè)主管是在鉆牛角尖,或者是心理有問題! |
|
| 37樓: | >>參與討論 |
| 作者: liuyanxu 于 2005/1/8 15:09:00 發(fā)布:
關(guān)注中。 |
|
| 38樓: | >>參與討論 |
| 作者: ar3000a 于 2005/1/8 22:24:00 發(fā)布:
就一個(gè)LED閃爍,要求什么實(shí)時(shí)性? |
|
| 39樓: | >>參與討論 |
| 作者: 汽車電子 于 2005/1/8 23:15:00 發(fā)布:
基于OS的系統(tǒng),你的LED閃爍不直接用定時(shí)器和延時(shí) 不單獨(dú)占用定時(shí)器 |
|
| 40樓: | >>參與討論 |
| 作者: mzh 于 2005/1/9 7:36:00 發(fā)布:
用自閃爍的LED。 |
|
| 41樓: | >>參與討論 |
| 作者: ji_xiong 于 2005/1/9 12:34:00 發(fā)布:
可以的啦 如果CPU在轉(zhuǎn)的過程中,沒有其他任何目的,那就叫軟件延時(shí).在個(gè)例子中我們可以把LEA腳接到計(jì)數(shù)器腳上,通過計(jì)數(shù)器可以精確記時(shí). |
|
| 42樓: | >>參與討論 |
| 作者: ji_xiong 于 2005/1/9 12:52:00 發(fā)布:
調(diào)用其它子程序 如果CPU在轉(zhuǎn)的過程中,沒有其他任何目的,那就叫軟件延時(shí). 調(diào)用其它子程序,兼延時(shí). |
|
| 43樓: | >>參與討論 |
| 作者: ji_xiong 于 2005/1/9 12:53:00 發(fā)布:
調(diào)用其它子程序,兼延時(shí) 如果CPU在轉(zhuǎn)的過程中,沒有其他任何目的,那就叫軟件延時(shí). 調(diào)用其它子程序,兼延時(shí). |
|
| 44樓: | >>參與討論 |
| 作者: ybzh 于 2005/1/11 10:14:00 發(fā)布:
有辦法了 不用定時(shí)器,不用軟件延時(shí),系統(tǒng)實(shí)時(shí)行高。但是沒有要求閃爍均勻! 對(duì)主程序的調(diào)用進(jìn)行計(jì)數(shù),當(dāng)調(diào)用N次之后,CPL PLED 呵呵,就是為了面試嘛,不用考慮實(shí)用性。 |
|
| 45樓: | >>參與討論 |
| 作者: blgd 于 2005/1/12 13:57:00 發(fā)布:
很容易! 定義一個(gè)變量,主程序調(diào)用一次加一,n次以后對(duì)pled取反同時(shí)n清零,n的值就隨你定啦!很簡(jiǎn)單吧! |
|
| 46樓: | >>參與討論 |
| 作者: kimfeng 于 2005/1/13 14:11:00 發(fā)布:
把LED接到晶振上, SETB PLED; |
|
| 47樓: | >>參與討論 |
| 作者: pic晚輩 于 2005/1/14 8:47:00 發(fā)布:
這決不是什么筆試題,只是某人吃飽了想出來的。理他就是吃的太飽 是不是一天到晚沒事干? 腦子不是用來瞎想的。吃的太飽! |
|
| 48樓: | >>參與討論 |
| 作者: sheepbaa 于 2005/1/14 8:58:00 發(fā)布:
不用定時(shí)器,不用軟件延時(shí),系統(tǒng)實(shí)時(shí)行高 不用定時(shí)器,不用軟件延時(shí),系統(tǒng)實(shí)時(shí)行高 我覺得如果要實(shí)現(xiàn)上面得3個(gè)要求,cpl pled 子程序直接去反就可以了,至少保證實(shí)時(shí)啊.用計(jì)數(shù)方式,不一定每次調(diào)用燈都會(huì)變化.就是這么簡(jiǎn)單,題目太無聊了.也許他只想考你會(huì)不會(huì)用取反指令而已! |
|
| 49樓: | >>參與討論 |
| 作者: zqz198312 于 2005/1/15 16:54:00 發(fā)布:
從題目看到的``` 從題目來看。好象在看你會(huì)不會(huì)用取反指令! |
|
|
|
| 免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |