久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2341|回復(fù): 0
收起左側(cè)

51單片機(jī)匯編計(jì)算器的問(wèn)題(最高3位數(shù)運(yùn)算)

[復(fù)制鏈接]
ID:335599 發(fā)表于 2018-5-28 11:09 來(lái)自觸屏版 | 顯示全部樓層 |閱讀模式
匯編計(jì)算器(最高3位數(shù)運(yùn)算),想將4*4的矩陣鍵盤(pán)改為4*5的,原用p1.0-p1.3接行,p1.4-p1.7接列可以實(shí)現(xiàn)功能,改用p3.3到p3.4接鍵盤(pán)列,鍵盤(pán)掃描程序?qū)⒆xp1改為讀p3卻不能實(shí)現(xiàn),還需要改其他嗎?

  1. ORG     0000H;
  2. JMP     MAIN;
  3. ORG     0003H;
  4. JMP     INP0;
  5. ORG     0030H;
  6. /*鍵盤(pán)所輸入數(shù)字依次存入70H-77H*/
  7. MAIN:   MOV   R6, #70H;
  8.         MOV   SP, #60H;
  9.                 CLR   80H;
  10.                 CLR   81H;
  11.                 SETB  EA;
  12.         SETB  EX0;
  13.                 SETB  IT0;
  14. DISP1:     MOV   R0,    #70H;//從第一位地址存數(shù)
  15.            MOV   R2,    #01H;//位選第一位
  16. DISP2:     MOV   A,     @R0;
  17.            LCALL SEG7;                 //跳轉(zhuǎn)段碼
  18.                    MOV   P0,    A;         //P0輸出字形
  19.                    MOV   P2,    R2;         //位選輸出
  20.                    LCALL D1MS;                 //跳轉(zhuǎn)延時(shí)
  21.                    MOV   P2,    #0;         //位選關(guān)閉,段碼不輸出
  22.                    INC   R0;                 //選擇下一位;
  23.                    MOV   A,     R2;         
  24.                    CLR   C;                         //進(jìn)位標(biāo)志清零
  25.                    RLC   A;                         //掃描字右移
  26.                    MOV   R2,    A;         //保存掃描字
  27.                    JNC  DISP2;                 //C=0時(shí), 循環(huán)一次未結(jié)束,跳轉(zhuǎn)到DISP2
  28. PASS:      LJMP  DISP1;
  29. D1MS:      MOV   R7,    #50H;//延時(shí)程序
  30. DMS:       DJNZ  R7,    DMS;

  31.                    RET;
  32. SEG7:      MOV   DPTR,  #TABLE;//查表程序
  33.            MOVC  A,     @A+DPTR;
  34.                    RET;
  35. TABLE:  DB    0C0H, 0F9H, 0A4H, 0B0H;
  36.         DB    99H,  92H,  82H,  0F8H;
  37.                 DB    80H,  90H,  88H,  83H;
  38.                 DB    0C6H, 0A1H, 86H,  8EH;
  39. /*P1.0-1.3,行線;    P1.4-1.7,列線;*/
  40. /*P0,輸出字形;      P2,輸出位選*/         
  41. INP0:         
  42.         PUSH  ACC;
  43.                 PUSH  B;
  44.                 PUSH  PSW;
  45. START:  MOV   R4, #00H;
  46. L1:     MOV   R3, #0F7H;//設(shè)掃描初值,11110111,P3.3=0
  47.         MOV   R1, #00H;        //取碼指針;





  48. /*首先行掃描*/
  49. L2:     MOV   A,  R3;        //行掃描開(kāi)始
  50.         MOV   P1, A;        //掃描值輸出至p1
  51.                 MOV   A,  P1;        //讀入P1的值
  52.                 MOV   R4, A;        //P3口中P3.4-3.7的狀態(tài)通過(guò)A,傳送到R4
  53.                 SETB  C;                //進(jìn)位標(biāo)志置1
  54.                 MOV   R5, #04H; //                  
  55. l3:     RLC   A;                //按鍵左移,通過(guò)C是否為0,判斷此列是否有0;無(wú)0則r1進(jìn)行累加;有0跳轉(zhuǎn)到延時(shí),
  56.         JNC   KEY;                //C=0,跳轉(zhuǎn)到延時(shí)
  57.                 INC   R1;               
  58.                 DJNZ  R5, L3;
  59.                 MOV   A,  R3;      
  60.                 SETB  C;
  61.                 RRC   A;           //換行掃描
  62.                 MOV   R3,A;         
  63.                 JC    L2;           //C=1,跳轉(zhuǎn)到L2
  64. KEY:    ACALL DELAY;
  65. D1:     MOV   A,P1;
  66.         XRL   A,R4;
  67.                 JNZ    D1;
  68.                 MOV   A,   R6; //指定存入地址
  69.                 MOV   R0,  A;  
  70.                 MOV   A,   R1; //存入數(shù)字
  71.                 MOV   @R0, A;




  72. /*判斷運(yùn)算法*/
  73.         MOV   A,     R1;
  74.                 XRL   A,     #0AH;//判斷是否為加法符
  75.                 JZ    ADD1;
  76.                 MOV   A,     R1;
  77.                 XRL   A,   #0BH;//判斷是否為減法符
  78.             JZ    SUBB1;
  79.                 MOV   A,     R1;
  80.                 XRL   A,   #0CH;//判斷是否為乘法符
  81.             JZ    MUL1;
  82.                 MOV   A,     R1;
  83.                 XRL   A,   #0DH;//判斷是否為除法符
  84.             JZ    DIV1;
  85.                 MOV   A,     R1;
  86.                 XRL   A,   #0EH;//判斷是否為等于號(hào)
  87.             JZ    EQUAL1;
  88.                 MOV   A,     R1;
  89.                 XRL   A,   #0FH;//判斷是否為清零鍵
  90.             JZ    ON1;



  91.    
  92.                 INC   R0;           //選擇下一個(gè)地址
  93.                 MOV   A,   R0; //存入r0的新數(shù)值
  94.                 MOV   R6,  A;
  95.                 POP   PSW;
  96.                 POP          B;
  97.                 pop   ACC;
  98.                 RET;
  99. DELAY:  MOV   R7,   #60;//消除抖動(dòng)延時(shí)程序
  100. DLY1:   DJNZ  R7,   DLY1;
  101.                 RET;



  102. ADD1:   MOV   A,    80H; //加法程序
  103.         MOV   81H,  A;
  104.         LJMP  D1;
  105.                 MOV   A,    81H;
  106.                 ADD   A,        80H;
  107.                 MOV   80H,  A;   
  108.         RET;



  109. SUBB1:  MOV   A,    80H;//減法程序
  110.         MOV   81H,  A;
  111.         LJMP  DD1;
  112.                 MOV   A,    80H;
  113.                 SUBB  A,    81H;
  114.                 MOV   80H,  A;
  115.         RET;



  116. MUL1:   MOV   A,    80H;//乘法程序
  117.                 MOV   81H,  A;
  118.         LJMP  DD1;
  119.                 MOV   A,    80H;
  120.                 MUL   AB;
  121.                 MOV          80H,  A;   
  122.         RET;




  123. DIV1:   MOV   A,    80H;//除法程序
  124.                 MOV   81H,  A;
  125.         LJMP  DD1;
  126.                 MOV   A,    80H;
  127.                 DIV   AB;
  128.                 MOV   80H,  A;  
  129.         RET;



  130. EQUAL1: MOV   A,    80H;//等于程序
  131.                 MOV   B,    #64H;//算百位數(shù)
  132.                 DIV   AB;
  133.                 MOV   72H,  A;         //將此數(shù)除100,商數(shù)放72h,余數(shù)放71h。
  134.                 MOV   71H,  B;
  135.                 MOV   A,    71H;
  136.                 MOV   B,    0AH;//算十位數(shù)
  137.                 DIV   AB;
  138.                 MOV   71H,  A;         //將此數(shù)除10,商數(shù)放71h,余數(shù)放70h。
  139.                 MOV   70H,  B;
  140.                 RET;


  141. ON1:    CLR    70H;                 //清零程序
  142.         CLR    71H;
  143.                 CLR    72H;
  144.                 CLR    73H;
  145.                 CLR    78H;
  146.                 CLR    79H;
  147.                 CLR    7AH;
  148.                 CLR    80H;
  149.                 CLR    81H;
  150.                 CLR    82H;
  151.                 CLR    88H;
  152.                 CLR    89H;
  153.                 CLR    8AH;
  154.                 MOV    R0, 00H;
  155.                 MOV    R1, 00H;
  156.                 MOV    R2, 00H;
  157.                 MOV    R3, 00H;
  158.                 MOV    R4, 00H;
  159.                 MOV    R5, 00H;
  160.                 MOV    R6, 70H;
  161.                 MOV    R7, 00H;
  162.                 RET;  


  163. DD1:    MOV   B,            #0AH;//將所輸入兩位數(shù)轉(zhuǎn)換為十進(jìn)制,并存入80h中
  164.         MOV   A,     78H;
  165.         MUL   AB;
  166.                 ADD   A,     70H;
  167.                 MOV   80H,   A;
  168.                 RET;
  169. END;
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲网站在线观看 | 亚洲精品免费在线 | 91精品国产一区二区三区 | 国产99久久精品一区二区300 | 美女一级a毛片免费观看97 | 91九色视频| www.久久久 | 精品久久久久久久久久久久久久 | 日韩欧美在线视频一区 | 国产精品爱久久久久久久 | 国产成年人视频 | 中文字幕a√| 一区二区三区精品视频 | 国产一区二区免费 | 久久综合一区二区三区 | 国产成人精品免费视频大全最热 | 操操网站 | 狠狠干狠狠插 | 国产在线h | 九色在线观看 | 国产9久 | 久久毛片| 日韩精品一区二区三区中文在线 | 久久亚洲综合 | 亚洲欧美一区二区三区情侣bbw | 在线一区二区三区 | 亚洲啪啪| 精品国产乱码久久久久久88av | 草久在线 | 国产精品福利在线观看 | 久久精品一区二区 | 亚洲伊人a| 久久精品欧美一区二区三区不卡 | 热久久免费视频 | 婷婷综合五月天 | 中国xxxx性xxxx产国 | 亚洲vs天堂 | 婷婷色国产偷v国产偷v小说 | 精品在线观看一区二区 | 北条麻妃一区二区三区在线观看 | 午夜精品一区二区三区在线观看 |