最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(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

請(qǐng)教鍵盤(pán)掃描程序,謝謝!

作者:wjun 欄目:單片機(jī)
請(qǐng)教鍵盤(pán)掃描程序,謝謝!
      keymark        bit    00h
key:        mov        p1,#0fh
        mov        a,p1
        anl        a,#0fh
        cjne        a,#0fh,key1
        ajmp        key3
key1:        acall        delay
        mov        a,#0efh
key3:        mov        p1,a
        mov        r1,a
        mov        a,p1
        anl        a,#0fh
        cjne        a,#0fh,kvalue
        mov        a,r1
        setb        c
        rlc        a
        jc        key2
key3:        clr        keymark
        ret
;***************鍵值計(jì)算部分*******************************
;如何得到鍵值的?請(qǐng)各位大蝦指點(diǎn)
kvalue:        mov        b,#0fbh        ;置初值11111011???為何????
key4:        rrc        a
        inc        b
        jc        key4
        mov        a,r1
        swap        a
key5:        rrc        a
        inc        b
        inc        b
        inc        b
        inc        b
        jc        key5
key6:        mov        a,p1        ;等待按鍵的釋放
        anl        a,#0fh
        cjne        a,#0fh,key6    
        setb        keymark        ;本次按鍵有效
        ret                      ;返回,(B)=鍵值  

2樓: >>參與討論
fengdream
沒(méi)有消抖部分。
 
3樓: >>參與討論
wangkj
c程序多簡(jiǎn)單,已經(jīng)nn年不用匯編了。
 
4樓: >>參與討論
lyjian
懂單片機(jī)的人用匯編,不懂的人用C.
 
5樓: >>參與討論
西安周公
搞小項(xiàng)目的人用匯編,搞大項(xiàng)目用的人用C
搞一個(gè) 64*64 元素的數(shù)組,累死你!

6樓: >>參與討論
平常人
lyjian:你懂單片機(jī)嗎?知道匯編和C的區(qū)別嗎?
“懂單片機(jī)的人用匯編,不懂的人用C.”

我還是第一次聽(tīng)到這種謬論。對(duì)這種一知半解的言論,不值得與你辯。

* - 本貼最后修改時(shí)間:2006-9-12 18:33:08 修改者:平常人

7樓: >>參與討論
conwh
LZ把程序整理好,不僅是尊重別人,更主要是尊重自己。
 
8樓: >>參與討論
lyjian
懂單片機(jī)和寫(xiě)程序是兩回事。
一個(gè)對(duì)單片機(jī)內(nèi)核一點(diǎn)都不了解的人,他也能用C寫(xiě)軟件,對(duì)這些人來(lái)說(shuō)寫(xiě)軟件和寫(xiě)文章沒(méi)太大的區(qū)別。一個(gè)不了解單片機(jī)內(nèi)核的人卻不可能用匯編來(lái)寫(xiě)程序。


9樓: >>參與討論
conwh
匯編是社會(huì)派,C是學(xué)院派。
 
10樓: >>參與討論
平常人
懂單片機(jī)和寫(xiě)程序是兩回事,部分同意這個(gè)觀點(diǎn);但是。。。。
樓上的是否知道,有人不用匯編,全部用C寫(xiě)成單片機(jī)程序,請(qǐng)問(wèn)不懂單片機(jī)內(nèi)核的人能這樣做嗎?

用C語(yǔ)言寫(xiě)程序容易,用C語(yǔ)言寫(xiě)單片機(jī)程序不容易,沒(méi)有足夠的根底是做不到的。

兩一方面,當(dāng)年IBM PC的程序多數(shù)是用匯編寫(xiě)的,可并不是所有人都懂8088的內(nèi)部結(jié)構(gòu)。

請(qǐng)不要把懂不懂匯編、C、寫(xiě)程序和單片機(jī)割裂開(kāi),他們是相輔相成的一個(gè)整體,只有做到全面掌握才能用好單片機(jī)。


11樓: >>參與討論
wangkj
讓大家看看我用C開(kāi)發(fā)的一個(gè)好玩的東西
鏡面顯示屏,我已經(jīng)貼過(guò)兩次了。這是一個(gè)實(shí)時(shí)系統(tǒng)。
我從93年就對(duì)單片機(jī)不用asm了,最開(kāi)始是PLM,然后單片機(jī)C語(yǔ)言出來(lái)以后才用的C.
ASM 確實(shí)適合高實(shí)時(shí)的場(chǎng)合,不過(guò)這種場(chǎng)合我用FPGA.速度到ns級(jí),
單片機(jī)是不可能的。我真不知道在哪些場(chǎng)合必須用ASM。
估計(jì)知道PLM的沒(méi)幾個(gè)。
../uploadfile/200705141507259931.jpg

../uploadfile/200705141507259931.jpg

12樓: >>參與討論
wangkj
我玩單片機(jī)最大的體會(huì)是不好找工作
工資還特低。
所以,單片機(jī)我只是偶爾玩玩。

13樓: >>參與討論
wangkj
看看俺寫(xiě)的keypad程序,這不是公司的,所以貼出來(lái)了。
#include <rc500.h>
#include <stdio.h>
#include <keypad.h>
#include <sound.h>
const unsigned CHAR code KEYTAB[16][2]=
                                    {{0xee,'1'},{0xed,'2'},{0xeb,'3'},{0xe7,'a'},
                                     {0xde,'4'},{0xdd,'5'},{0xdb,'6'},{0xd7,'b'},
                                     {0xbe,'7'},{0xbd,'8'},{0xbb,'9'},{0xb7,'c'},
                                     {0x7e,'.'},{0x7d,'0'},{0x7b,'.'},{0x77,'d'}
                                    };  


/*------------------------------------------------------------------------------
--
調(diào)用方式:unsigned CHAR GetKeyCh(void)
        
函數(shù)說(shuō)明:取鍵值
getCHAR from keypad
return VALUE is press key  [0..9,ABCD,)#]
if return 0xff,then no key was pressed.
-------------------------------------------------------------------------------- */
unsigned CHAR GetKeyCh(void)          
{ unsigned CHAR i;
  unsigned CHAR i1,i2,ch,ScanCode;
  static unsigned CHAR OldScanCode=0xff;
  static unsigned int count;

     P2=0x70;
     P1_7=1;
     i1=P1&0x80;
     i1=i1|P2;
     P2=0x0f;
     P1_7=0;
     i2=P2;
     if ((i1|i2)!=0xff){
       ScanCode=i1|i2;
       if (OldScanCode==ScanCode) //same key still pressed
       {   
          return (0xff);
       }
       else  //diff key pressed
       {
         OldScanCode=ScanCode;
       }
     }  
     else //no key pressed
       {
         OldScanCode=0xff;
//          if (count<0x7000)  
         count++;    
         return(0xff);
       }
     for(i=0;i<16;){
       if (KEYTAB[i][0]==ScanCode)
           {
             ch=KEYTAB[i][1];
             OldScanCode=ScanCode;
              if (count>7000)
             {
               BeepKey();
               count=0;
               return(ch);
             }
           }
       i++;
     }
     return(0xff);
}

14樓: >>參與討論
xwj
呵呵,又拿來(lái)顯擺了?
 
15樓: >>參與討論
conwh
又回到老話題了
就這個(gè)問(wèn)題我也闡述一下觀點(diǎn):首先不反對(duì)C的運(yùn)用;2)不贊同否定ASM。
C的運(yùn)用確實(shí)是簡(jiǎn)化計(jì)算的過(guò)程,但由于代碼轉(zhuǎn)換效率較低,在實(shí)時(shí)系統(tǒng)中對(duì)于高速檢測(cè)和實(shí)時(shí)檢測(cè)以及簡(jiǎn)短計(jì)算,它的效率就明顯降低。而ASM則相反,由于單片機(jī)尤其是低位機(jī)一般廣泛應(yīng)用于控制和檢測(cè),一般的代碼都很小,這樣ASM就顯得比較重要一點(diǎn)(可以非常直接面對(duì)任務(wù))。
C是一種“隱”性語(yǔ)言,很多操作是看不見(jiàn)的,所以程序看起來(lái)是簡(jiǎn)練了,這也就是都喜歡C的原因,但它的內(nèi)部轉(zhuǎn)換(編譯)都是使用通用算法,所以其代碼率是比較低下的,這也是它的缺點(diǎn)。
ASM是一種“顯”性的語(yǔ)言,所有代碼都是直接編寫(xiě)的,所以看程序是比較沉長(zhǎng)的,讀起來(lái)是比較麻煩的,所以年輕人不愿意接近它。但它的代碼轉(zhuǎn)換效率是很高的,這也是它的優(yōu)點(diǎn)。不過(guò)現(xiàn)在也有模塊結(jié)構(gòu)的,編寫(xiě)是很簡(jiǎn)單的,大量的代碼也是“隱藏”起來(lái)的。在讀的方面也是很容易的。
總而言之,各有千秋。但結(jié)合單片機(jī)的應(yīng)用我個(gè)人感覺(jué)還是使用ASM還是比較好的。如果都想搞“高級(jí)”的,我看還是叫芯片廠家搞更大的MCU,用WIN多爽呀。

16樓: >>參與討論
yewuyi
wangkj應(yīng)該就你那狀態(tài)轉(zhuǎn)移等多講解一些
^^

17樓: >>參與討論
wangkj
基本同意樓上的,不過(guò)結(jié)論不同
我覺(jué)得<3K的程序可以考慮用匯編,高于3K用C.有時(shí)候編譯器的效率很高。
最好是混合編程,關(guān)鍵用asm,大部分用C.
甚至有的神人直接用機(jī)器碼!!,我真服了。

還有,樓上的樓上的的簽名圖片挺漂亮,不知道那是誰(shuí)?
以前的的那個(gè)簽名圖片咋不用了?

還有,我的那個(gè)鏡子已經(jīng)碎了 :( 。

18樓: >>參與討論
hotpower
哈哈~~~只要速度能滿足都一樣~~~
 
19樓: >>參與討論
shyygy
~~~~~~~~~~~~~
我個(gè)人覺(jué)得,不管白貓還是黑貓,只要能抓到老鼠就是好貓.

20樓: >>參與討論
lyjian
愛(ài)用那個(gè)用那個(gè)!
其實(shí)我只是說(shuō)說(shuō)個(gè)人的觀點(diǎn)而已。愛(ài)用那個(gè)用那個(gè),這是個(gè)人行為。

21樓: >>參與討論
西安周公
還真有用PLM的同人
我的意見(jiàn):簡(jiǎn)單的用匯編(代碼大小、效率高低看水平),復(fù)雜的用高級(jí)語(yǔ)言(PLM、C(支持浮點(diǎn))),現(xiàn)在的硬件很便宜,長(zhǎng)度不是大問(wèn)題。

22樓: >>參與討論
oywwen
匯編與C都用
對(duì)程序速度要求很高時(shí)才用匯編

一般還是用C方便

如果有經(jīng)驗(yàn),編得好的話,也比匯編大不了多少

效率也是非常高的

也可以同時(shí)用兩種一起編,框架由C來(lái)完成,細(xì)節(jié)用匯編也不錯(cuò)的

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
求助芯片燒壞的問(wèn)題
找ATMEL單片機(jī)
單片機(jī)主頻
弱弱的問(wèn)一個(gè)關(guān)于X5045寫(xiě)入異常的問(wèn)題,讀取正常
有沒(méi)有做過(guò)IPOD硬件接口的?
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號(hào)