迅维网

查看: 4624|回复: 3
打印 上一主题 下一主题

学生时期用AT89S52单片机做的抢答器及代码

[复制链接]
跳转到指定楼层
1#
发表于 2009-8-27 02:00:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 来自: 北京 来自 北京

马上注册,获取阅读精华内容及下载权限

您需要 登录 才可以下载或查看,没有帐号?注册

x


汇编程序的源代码:
r0用作扫描键盘 ,r1送按键返回值, r2开关允许,r3,r4,计数,r5,r6(保存倒计时数据),(r7=0、1、2 分别是倒计时、抢答、调整时间)
        
sig bit 40h
        org 0000h
        jmp start
        org 0003h ;中断0  调整计时的
        ljmp TT0
        org 000bh ;定时0  用于倒计时
        ljmp TT1
        org 0013h ;中断1  开关允许
        ljmp TT2
        org 001bh ;定时1  铃声
        org 0030h
start:mov time,#90
        mov r7,#2
        mov r6,#0
        setb px1
        clr p3.7
        clr sig
        mov sp,#50h
        mov dptr,#tab
        mov ie,#8fh  ;前四个中断全开
        mov TMOD,#11h
        mov th0,#3ch
        mov tl0,#0b0h

display:cjne r7,#2,display2   ;调时显示
        jnb sig,next1
        lcall skey1
next1:mov a,time
        mov b,#10
        div ab
        movc a,@a+dptr
        mov p0,a
        mov p2,#82h
        lcall dely
        mov a,b
        movc a,@a+dptr
        mov p0,a
        mov p2,#83h
        lcall dely
        mov p0,#0
        mov p2,#82h
        lmov p2,#83h
        lcall dely               
        sjmp display

display2:cjne r7,#1,display3    ;抢答显示
         lcall scanfu4
         mov a,r1
         mov b,#10
         div ab
         movc a,@a+dptr
         mov p0,a
         mov p2,#82h
         lcall dely
         mov a,b
         movc a,@a+dptr
         mov p0,a
         mov p2,#83h
         lcall dely
         sjmp display2

display3:jb sig2,display2    ;倒时显示

         sjmp display3

skey1:MOV A,#0FH      ;按键扫描
         MOV P1,A
         MOV A,P1
         CJNE A,#0FH,key1
         ret
key1:LCALL dela
        mov p1,#0Fh
        MOV A,P1
        CJNE A,#0FH,X1
        ret
   X1:CJNE a,#0EH, Y2
        MOV P1,#0F0H
        MOV r0,P1
   Y0:CJNE r0,#0E0H,Y1   ;0
        lcall dela
        mov a,time
        cjne a,#90,aa1
        mov time,#0
        ret
   aa1:add a,#5
        mov time,a
        ret
   Y1:CJNE r0,#0D0H,Y2   ;1
        lcall dela
        mov a,time
        cjne a,#0,aa
        mov time,#90
        ret
    aa:subb a,#5
        mov time,a
  Y2:   ret

scanfu4:MOV A,#0FH  ;按键扫描(抢答时按键)
        MOV P1,A
        MOV A,P1
        CJNE A,#0FH,KEYCA
               ret
KEYCA:  LCALL DEL
        mov p1,#0Fh
        MOV A,P1
        CJNE A,#0FH,X1CA
        ret
  X1CA: CJNE a,#0EH,X2CA
        MOV P1,#0F0H
        MOV r0,P1
Y0CA:        CJNE r0,#0E0H,Y1CA   ;0
        mov r1,#1
        jmp X4CA
Y1CA:   CJNE r0,#0D0H,Y2CA   ;1
        mov r1,#2
        jmp X4CA
Y2CA:   CJNE r0,#0B0H,Y3CA   ;2
        mov r1,#3
        jmp X4CA
Y3CA:   CJNE r0,#70H,X2CA    ;3
        mov r1,#4
        jmp X4CA
  X2CA: CJNE a,#0DH,X3CA
        MOV P1,#0F0H
        MOV r0,P1
Y4CA:        CJNE r0,#0E0H,Y5CA   ;4
        mov r1,#5
        jmp X4CA
Y5CA:   CJNE r0,#0D0H,Y6CA   ;5
        mov r1,#6
        jmp X4CA
Y6CA:   CJNE r0,#0B0H,Y7CA   ;6
        mov r1,#7
        jmp X4CA
Y7CA:   CJNE r0,#70H,X3CA    ;7
        mov r1,#8
        jmp X4CA
X3CA:   CJNE a,#0BH,X4CA
        MOV P1,#0F0H
        MOV r0,P1
Y8CA:        CJNE r0,#0E0H,Y5CA   ;8
        mov r1,#9
        jmp X4CA
Y9CA:   CJNE r0,#0D0H,X4CA1   ;9(从0开始)
        mov r1,#10
X4CA:   setb p3.7
         lcall dely
X4CA1:        ret


   dely:mov 20h,#50
        djnz 20h,$
        ret
    del:mov 20h,#40
   del1:mov 21h,#0
   del2:djnz 21h,del2
        djnz 20h,del1
        ret
   dela:mov 20h,#150
   delb:mov 21h,#0
   delc:djnz 21,delc
        djnz 20h,delb
        ret

    TT0:                  ;调用延时
           ;mov r4,r6
           ;mov r1,#0
           clr p3.7
           clr sig
           dec r7
           jb cy,TT0_a
          reti
TT0_a: mov r7,#2
          reti

   TT1:mov th0,#3ch
         mov tl0,#0b0h
         inc r3
         cjne r3,#20,RETT      ;有没有50MS
         mov r3,#0
         cjne r4,#0,RETT1
         reti
RETT1:dec r4
  RETT:reti

  TT2:                   ;调用延时
         mov r4,r6
         mov r1,#0
         cpl sig
         clr p3.7
         reti
   tab:db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;;;;0到9字型码表为数码管
        End

评分

参与人数 1下载分 +20 收起 理由
yzz163 + 20 原创内容

查看全部评分

2#
发表于 2009-8-31 12:43:07 | 只看该作者 来自: 北京 来自 北京
可惜了,没人给点评论。。

回复 支持 反对

使用道具 举报

3#
发表于 2009-12-20 19:50:03 | 只看该作者 来自: 江苏常州 来自 江苏常州
原理图太小了,看不清,如何评论?

回复 支持 反对

使用道具 举报

4#
发表于 2016-7-26 16:58:05 | 只看该作者 来自: 山西晋中 来自 山西晋中
深奥不浅!不是一个水平

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表
附近
店铺
微信扫码查看附近店铺
维修
报价
扫码查看手机版报价
信号元
件查询
点位图 AI维修
助手



芯片搜索

快速回复