计算机应用 | 古代文学 | 市场营销 | 生命科学 | 交通物流 | 财务管理 | 历史学 | 毕业 | 哲学 | 政治 | 财税 | 经济 | 金融 | 审计 | 法学 | 护理学 | 国际经济与贸易
计算机软件 | 新闻传播 | 电子商务 | 土木工程 | 临床医学 | 旅游管理 | 建筑学 | 文学 | 化学 | 数学 | 物理 | 地理 | 理工 | 生命 | 文化 | 企业管理 | 电子信息工程
计算机网络 | 语言文学 | 信息安全 | 工程力学 | 工商管理 | 经济管理 | 计算机 | 机电 | 材料 | 医学 | 药学 | 会计 | 硕士 | 法律 | MBA
现当代文学 | 英美文学 | 通讯工程 | 网络工程 | 行政管理 | 公共管理 | 自动化 | 艺术 | 音乐 | 舞蹈 | 美术 | 本科 | 教育 | 英语 |

免费电子智能抢答器(单片机)(一)信息工(2)

2013-05-21 01:16
导读:MOVR0,A;键号送显示缓冲区 INCR0 DJNZR7,L1;3位数值输入完否?未完继续,否则返回 POPACC POPPSW CLRRS1 RET KEYSCAN:MOVR3, #0F7H;扫描初值(P1.3=0) MOVR1,#00H;取码指针 L3:MO

  MOV  R0,A  ;键号送显示缓冲区
  INC  R0
  DJNZ R7,L1  ;3位数值输入完否?未完继续,否则返回
  POP  ACC
  POP  PSW
  CLR  RS1
  RET
KEYSCAN:MOV  R3, #0F7H ;扫描初值(P1.3=0)
  MOV  R1, #00H ;取码指针
L3:  MOV  A, R3  ;开始扫描
  MOV  P1, A  ;将扫描值输出至P1
  MOV  A, P1  ;读入P1值,判断是否有键按下
  MOV  R4, A  ;存入R4,以判断按键是否放开
  SETB C   ;C=1
  MOV  R5, #04H ;扫描P1.4~P1.7
L4:  RLC  A   ;将按键左移一位
  JNC  KEYIN  ;判断C=0?有键按下则C=0,跳至KEYIN
  INC  R1   ;C=1,则无键按下,将取码指针值加1
  DJNZ R5, L4  ;4列扫描完毕了吗?
  MOV  A, R3  ;扫描值载入
  SETB C   ;C=1
  RRC  A   ;扫描下一行(P1.3~P1.0)
  MOV  R3, A  ;存回扫描寄存器
  JC  L3   ;C=1?是则P1.0尚未扫描到
  SJMP KEYSCAN  ;C=0,则四行已扫描完毕
KEYIN: MOV  R7, #60  ;延时消除抖动
D2:  MOV  R6, #248 ;
  DJNZ R6, $  ;
  DJNZ R7, D2  ;
D3:  MOV  A, P1   ;延时后再读入P1值

(科教范文网http://fw.NSEAC.com编辑发布)


  XRL  A, R4  ;与上次读入值作比较
  JZ  D3   ;A=0,表示按键未放,等待按键释放
  MOV  A, R1  ;按键已放开,取码指针载入累加器
  MOV  DPTR,#TABLE ;键盘码表首地址送DPTR
  MOVC A, @A+DPTR ;查键码
  RET     ;返回
TABLE: DB 00H,01H,02H,03H ;键码安排表与键盘相同
  DB 04H,05H,06H,07H 
  DB 08H,09H,0AH,0BH
  DB 0CH,0DH,0EH,0FH
  ORG 0200H
DISPLAY:MOV R0, #DBUF  ;串口静态显示子程序
   MOV R2,#3  ;显示3位数码
   MOV DPTR,#SEGTAB;
DISP:  MOV A,@R0  ;
   MOVC A,@A+DPTR ;取字段码
   MOV SCON,#0  ;置串口工作方式0
   MOV SBUF,A  ;开始发送
   JNB TI,$  ;等待发送完毕
   CLR TI   ;发送完毕,标志位清零
   INC R0   ;缓冲单元地址增1
   DJNZ R2,DISP  ;三位数码发送完否?
   RET    ;发送完毕,则返回
SEGTAB:  DB  0FCH,60H,0DAH,0F2H   ;0,1,2,3(共阳极字段码表)
         DB  66H,0B6H, 0BEH,0E0H  ;4,5,6,7
         DB  0FEH,0F6H,0EEH,3EH  ;8,
上一篇:步进电机控制系统上位机的意义和目的信息 下一篇:没有了