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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3586|回復: 0
打印 上一主題 下一主題
收起左側

用8051與1601LCD設計的計算器 帶仿真和匯編源程序

[復制鏈接]
跳轉到指定樓層
樓主
用8051與1601LCD設計的計算器仿真原理圖如下:



部分匯編源碼預覽:

  1. /*******************************************************************************
  2. ************                 LABCENTER ELECTRONICS                  ************                              
  3. ************                Proteus VSM Sample Design Code                  ************                        
  4. ************               Integer Calculator ( 2K Code Limit)                ************
  5. *******************************************************************************/

  6. NAME    KEYPAD
  7. ; This routine will read a character press from the keypad and return it in R7.

  8. ;Set up Segments for the Input Routine - No parameters.
  9. ?PR?input?KEYPAD               SEGMENT CODE
  10.         PUBLIC        input
  11. ?DT?input?KEYPAD               SEGMENT DATA

  12. RSEG  ?DT?input?KEYPAD                          ; Local Variable Segment for Output Routine.

  13. KEY_ROW1        equ        0EFh
  14. KEY_ROW2        equ        0DFh
  15. KEY_ROW3        equ        0BFh
  16. KEY_ROW4        equ        07Fh

  17. keyflags:        ds        16

  18. RSEG  ?PR?input?KEYPAD                          ; Code Segment for Output Routine.
  19. input:

  20. keyscan:push DPH
  21.                 push DPL
  22.                
  23.                 mov R0,#keyflags                 ; R0 addresses the key toggle bytes
  24.                 mov R1,#KEY_ROW1                ; R1 address the keyboard row address
  25.                 mov R2,#4                        ; R2 counts rows
  26. ksrow:        mov P2,R1                        ; Set row address to port P2
  27.                 nop
  28.                 mov A,P1                        ; Read column data from port P1
  29.                 mov R3,#4                        ; R3 counts keys per row
  30.                 anl A,#3Fh
  31. ks0:        rrc A                                ; Move next bit into carry
  32.                 mov R4,A                        ; R4 preserves the row data
  33.                 jc ks1                                ; Jump if key not pressed
  34.                 mov A,@R0                        ; Test if key already pressed
  35.                 mov @R0,#1                        ; Flag pressed anyway
  36.                 jz ksnew                        ; Jump if key newly pressed
  37.                 jmp ks2
  38. ks1:        mov @R0,#0                        ; Flag key as not pressed
  39. ks2:        inc R0                                ; Loop for next key in this row
  40.                 mov A,R4
  41.                 djnz R3,ks0

  42.                 mov A,R1                        ; Jiggle R1 to address next row
  43.                 rl A
  44.                 mov R1,A
  45.                 djnz R2,ksrow

  46.                 clr A                               
  47.                 mov R7,A                        ; Return zero - no (new) key press.       
  48.                 jmp ksend
  49.                                                
  50. ksnew:        mov DPTR,#keycodes                ; We've found a new key since last time:
  51.                 mov A,R0                        ; The key flag address (ordinal) is in R0
  52.                 clr C
  53.                 subb A,#keyflags
  54.                 movc A,@A+DPTR
  55.                 mov R7,A                        ; Move the Key into R7 to be returned.
  56. ksend:        mov P2,#0FFh
  57.                 pop DPL
  58.                 pop DPH
  59.                 ret

  60. ;Data tables for returned row bits
  61. keycodes:
  62.         db         '7','8','9', '/'
  63.                 db        '4','5','6', '*'
  64.                 db        '1','2','3', '-'
  65.                 db        'C','0','=', '+'

  66.                 END
復制代碼



完整源碼和仿真工程文件下載:
用8051與1601LCD設計的計算器.rar (35.23 KB, 下載次數: 30)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一级毛片 | 国产黄色大片在线观看 | 中文在线www| 国产日韩欧美精品一区二区三区 | 午夜影院在线观看免费 | 欧美在线观看一区 | 久久激情视频 | 91视频在线看 | 欧美色图另类 | 国产久| 亚洲国产欧美在线人成 | 一区二区三区在线免费观看 | 久久国产精品一区二区三区 | 欧美精品欧美精品系列 | 久久伊人久久 | 国产精品精品视频一区二区三区 | 91视频网 | 91精品国产一区二区在线观看 | 精品欧美一区二区三区久久久 | 中文字幕精品视频 | 永久www成人看片 | 精品一区二区三区在线观看国产 | 成人久久18免费网站麻豆 | 亚洲午夜久久久 | 天天色天天射天天干 | 亚洲免费婷婷 | 亚洲a视频 | 国产精品精品视频一区二区三区 | 国产精品性做久久久久久 | 免费视频99 | av一二三区 | 黄 色 毛片免费 | 国产在线激情视频 | 不卡av在线 | 日韩精品av一区二区三区 | 欧美日韩高清在线观看 | 日韩久久精品 | 伊人av在线播放 | 免费毛片www com cn | 精品视频一区二区三区在线观看 | 美女黄色在线观看 |