⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qdq_8.lst

📁 多功能八路抢答器
💻 LST
📖 第 1 页 / 共 2 页
字号:
  300:
  301:	  0148	C2 22		    CLR RING
  302:
  303:	  014A	21 60		    AJMP CHECK
  304:
  305:	  014C	B4 14 11	FULL:   CJNE A,#14H,CHECK;下面是1s的情况,响并显示号数并清R0,重新计
  306:
  307:	  014F	D2 22		        SETB RING
  308:
  309:	  0151	EE		        MOV A,R6
  310:
  311:	  0152	60 40		    JZ QUIT;计时完毕
  312:
  313:	  0154	78 00		    MOV R0,#00H
  314:
  315:	  0156	1E		    DEC R6;一秒标志减1
  316:
  317:	  0157	21 60		    AJMP CHECK
  318:
  319:	  0159	E8		LARGER: MOV A,R0
  320:
  321:	  015A	B4 14 03	        CJNE A,#14H,CHECK;如果1s向下运行,否者跳到查"停/显示"
  322:
  323:	  015D	1E		    DEC R6;计时一秒R6自动减1

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 7



 Line  I  Addr  Code            Source

  324:
  325:	  015E	78 00		    MOV R0,#00H
  326:
  327:	  0160	30 B1 31	CHECK: JNB P3.1,QUIT;如按下停止键退出
  328:
  329:	  0163	30 20 02	       JNB OK,CHECKK      ;只在回答倒计时才有效
  330:
  331:	  0166	21 6B		       AJMP NEXTT
  332:
  333:	  0168	30 B0 BA	CHECKK:JNB P3.0,REPEAT    ;判断是否使用锦囊
  334:
  335:	  016B	51 1E		NEXTT:  ACALL DISPLAY
  336:
  337:	  016D	20 20 02	   JB OK,ACCOUT;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用)
  338:
  339:	  0170	21 31		   AJMP RECOUNT
  340:
  341:	  0172			ACCOUT:
  342:	  0172	E5 36		        MOV A,36H
  343:
  344:	  0174	30 E0 23	       JNB ACC.0,TRUE1
  345:
  346:	  0177	30 E1 2A	       JNB ACC.1,TRUE2
  347:
  348:	  017A	30 E2 31	       JNB ACC.2,TRUE3
  349:
  350:	  017D	30 E3 38	       JNB ACC.3,TRUE4
  351:
  352:	  0180	30 E4 3F	       JNB ACC.4,TRUE5
  353:
  354:	  0183	30 E5 46	       JNB ACC.5,TRUE6
  355:
  356:	  0186	30 E6 05	       JNB ACC.6,TZ1
  357:
  358:	  0189	30 E7 05	       JNB ACC.7,TZ2
  359:
  360:	  018C	21 31		       AJMP RECOUNT
  361:
  362:	  018E	02 01 D6	 TZ1:JMP TRUE7
  363:
  364:	  0191	02 01 E0	 TZ2:JMP TRUE8
  365:	  0194	C2 20		 QUIT:  CLR OK;如果按下了"停止键"执行的程序
  366:
  367:	  0196	C2 22		   CLR RING
  368:
  369:	  0198	01 65		   AJMP START
  370:
  371:				;=====正常抢答处理程序=====
  372:
  373:	  019A	51 8A		TRUE1: ACALL BARK
  374:
  375:	  019C	EA		       MOV A,R2
  376:
  377:	  019D	FE		   MOV R6,A;抢答时间R2送R6
  378:
  379:	  019E	7B 01		   MOV R3,#01H

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 8



 Line  I  Addr  Code            Source

  380:
  381:	  01A0	C2 20		   CLR OK;因为答题的计时不再查询抢答,所以就锁了抢答
  382:
  383:	  01A2	21 29		   AJMP COUNT
  384:
  385:	  01A4	51 8A		TRUE2:ACALL BARK
  386:
  387:	  01A6	EA		      MOV A,R2
  388:
  389:	  01A7	FE		  MOV R6,A
  390:
  391:	  01A8	7B 02		  MOV R3,#02H
  392:
  393:	  01AA	C2 20		  CLR OK
  394:
  395:	  01AC	21 29		  AJMP COUNT
  396:
  397:	  01AE	51 8A		TRUE3:ACALL BARK
  398:
  399:	  01B0	EA		      MOV A,R2
  400:
  401:	  01B1	FE		  MOV R6,A
  402:
  403:	  01B2	7B 03		  MOV R3,#03H
  404:
  405:	  01B4	C2 20		  CLR OK
  406:
  407:	  01B6	21 29		  AJMP COUNT
  408:
  409:	  01B8	51 8A		TRUE4:ACALL BARK
  410:
  411:	  01BA	EA		      MOV A,R2
  412:
  413:	  01BB	FE		    MOV R6,A
  414:
  415:	  01BC	7B 04		    MOV R3,#04H
  416:
  417:	  01BE	C2 20		    CLR OK
  418:
  419:	  01C0	21 29		    AJMP COUNT
  420:
  421:	  01C2	51 8A		TRUE5:ACALL BARK
  422:
  423:	  01C4	EA		        MOV A,R2
  424:
  425:	  01C5	FE		    MOV R6,A
  426:
  427:	  01C6	7B 05		    MOV R3,#05H
  428:
  429:	  01C8	C2 20		    CLR OK
  430:
  431:	  01CA	21 29		    AJMP COUNT
  432:
  433:	  01CC	51 8A		TRUE6: ACALL BARK
  434:
  435:	  01CE	EA		        MOV A,R2

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 9



 Line  I  Addr  Code            Source

  436:
  437:	  01CF	FE		    MOV R6,A
  438:
  439:	  01D0	7B 06		    MOV R3,#06H
  440:
  441:	  01D2	C2 20		    CLR OK
  442:
  443:	  01D4	21 29		    AJMP COUNT
  444:
  445:	  01D6	51 8A		TRUE7:ACALL BARK
  446:
  447:	  01D8	EA		        MOV A,R2
  448:
  449:	  01D9	FE		    MOV R6,A
  450:
  451:	  01DA	7B 07		    MOV R3,#07H
  452:
  453:	  01DC	C2 20		    CLR OK
  454:
  455:	  01DE	21 29		    AJMP COUNT
  456:
  457:	  01E0	51 8A		TRUE8:ACALL BARK
  458:
  459:	  01E2	EA		        MOV A,R2
  460:
  461:	  01E3	FE		    MOV R6,A
  462:
  463:	  01E4	7B 08		    MOV R3,#08H
  464:
  465:	  01E6	C2 20		    CLR OK
  466:
  467:	  01E8	21 29		    AJMP COUNT
  468:				;=====犯规抢答程序=====
  469:
  470:	  01EA	78 00		ERROR:  MOV R0,#00H
  471:
  472:	  01EC	75 8D 3C	        MOV TH1,#3CH
  473:
  474:	  01EF	75 8B B0	        MOV TL1,#0B0H
  475:
  476:	  01F2	8B 34		        MOV 34H,R3;犯规号数暂存与(34H)
  477:
  478:	  01F4	E8		HERE:   MOV A,R0
  479:
  480:	  01F5	B4 06 0A	       CJNE A,#06H,FLASH;0.3s向下运行->灭并停响
  481:
  482:	  01F8	C2 22		    CLR RING
  483:
  484:	  01FA	7B 0A		    MOV R3,#0AH
  485:
  486:	  01FC	7C 0A		    MOV R4,#0AH
  487:
  488:	  01FE	7D 0A		        MOV R5,#0AH;三灯全灭
  489:
  490:	  0200	41 11		    AJMP CHECK1
  491:

ASEM-51 V1.2                                        Copyright (c) 1996 by W.W. Heinz                                         PAGE 10



 Line  I  Addr  Code            Source

  492:	  0202	B4 0C 0C	FLASH:  CJNE A,#0CH,CHECK1;下面是0.8s的情况,响并显示号数并清R0,重新计
  493:
  494:	  0205	D2 22		        SETB RING
  495:
  496:	  0207	78 00		        MOV R0,#00H
  497:
  498:	  0209	AB 34		    MOV R3,34H;取回号数
  499:
  500:	  020B	7D 0B		    MOV R5,#0BH
  501:
  502:	  020D	7C 0B		        MOV R4,#0BH;显示FF和号数
  503:
  504:	  020F	41 11		    AJMP CHECK1
  505:
  506:	  0211	30 B1 04	CHECK1: JNB P3.1,QUIT1
  507:
  508:	  0214	51 1E		        ACALL DISPLAY
  509:
  510:	  0216	21 F4		    AJMP HERE
  511:
  512:	  0218	C2 22		QUIT1:  CLR RING
  513:
  514:	  021A	C2 20		        CLR OK
  515:
  516:	  021C	01 65		    AJMP START
  517:
  518:				;=====显示程序=====
  519:
  520:	  021E	90 02 40	DISPLAY:MOV DPTR,#DAT1;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出,
  521:
  522:	  0221	EB		        MOV A,R3
  523:
  524:	  0222	93		    MOVC A,@A+DPTR
  525:
  526:	  0223	75 A0 FE	  MOV P2,#0feH
  527:
  528:	  0226	F5 80		  MOV P0,A
  529:
  530:	  0228	51 6E		  ACALL DELAY2
  531:
  532:	  022A	90 02 4C	  MOV DPTR,#DAT2
  533:
  534:	  022D	ED		  MOV A,R5
  535:
  536:	  022E	93		  MOVC A,@A+DPTR
  537:
  538:	  022F	75 A0 FD	  MOV P2,#0fdH
  539:
  540:	  0232	F5 80		  MOV P0,A
  541:
  542:	  0234	51 6E		  ACALL DELAY2
  543:
  544:	  0236	EC		  MOV A,R4
  545:
  546:	  0237	93		  MOVC A,@A+DPTR
  547:

ASEM-51 V1.2                                        Copyright (c) 1996 by W.W. Heinz                                         PAGE 11



 Line  I  Addr  Code            Source

  548:	  0238	75 A0 FB	  MOV P2,#0fbH
  549:
  550:	  023B	F5 80		  MOV P0,A
  551:
  552:	  023D	51 6E		  ACALL DELAY2
  553:
  554:	  023F	22		  RET
  555:
  556:	  0240	00 06 5B 4F	DAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H
	  0244	66 6D 7D 07
	  0248	7F 6F 00 71
  557:
  558:				;"灭","1","2","3","4","5","6","7","8","9","灭","F"
  559:
  560:	  024C	3F 06 5B 4F	DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H
	  0250	66 6D 7D 07
	  0254	7F 6F 00 71
  561:
  562:				;第一个为零,其他与上相同,因为十位如果为零显示熄灭
  563:
  564:				;====加减时间延时(起到不会按下就加N个数)======
  565:
  566:	  0258	75 35 08	DELAY1: MOV 35H,#08H
  567:
  568:	  025B	51 1E		LOOP0:  ACALL DISPLAY
  569:
  570:	  025D	D5 35 FB	        DJNZ 35H,LOOP0
  571:
  572:	  0260	22		        RET
  573:
  574:				;=====延时4236个机器周期(去抖动用到)=====
  575:
  576:	  0261	75 32 12	DELAY:  MOV 32H,#12H
  577:
  578:	  0264	75 33 AF	LOOP:   MOV 33H,#0AFH
  579:
  580:	  0267	D5 33 FD	LOOP1:  DJNZ 33H,LOOP1
  581:
  582:	  026A	D5 32 F7	        DJNZ 32H,LOOP
  583:
  584:	  026D	22		    RET
  585:
  586:				;=====延时4236个机器周期(显示用到)=====
  587:
  588:	  026E	75 32 43	DELAY2:  MOV 32H,#43H
  589:
  590:	  0271	75 33 1E	LOOP3:   MOV 33H,#1EH
  591:
  592:	  0274	EF		         MOV A,R7           ;每隔60~70个机器周期读一次P1口,全为1时为无效数据,继续读,有一个不为1时,转
				到正常抢答处理
  593:
  594:	  0275	70 07		         JNZ  AAAA1         ;没读到有效数据时继续转到AAAA1
  595:
  596:	  0277	D5 33 FD	LOOP2:  DJNZ 33H,LOOP2
  597:
  598:	  027A	D5 32 F4	        DJNZ 32H,LOOP3

ASEM-51 V1.2                                        Copyright (c) 1996 by W.W. Heinz                                         PAGE 12



 Line  I  Addr  Code            Source

  599:
  600:	  027D	22		    RET
  601:
  602:				;=====读抢答按键数据口程序=====
  603:
  604:				;由于在读抢答数据口的时候,单片机首先进入倒计时程序,再调用显示程序,最后才检测按键口
  605:				;然而在检测按键口时动态扫描要调用三次(4ms)延时程序.这样就会导致读数据口出现滞后,造成1号优先最高.8号

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -