1 CURR_NUM EQU 30H ;定义一个变量EQU 2 3 DAT_74164 bit P0.6 ;3~10行:属于头文件,显示定义硬件资源与硬件引脚 4 CLK_74164 bit P0.7 5 6 KEY_COMMON bit P3.2 7 KEY_1 bit p0.5 8 KEY_2 bit p0.4 9 10 DIG_6 bit p0.0 11 12 org 0000H 13 jmp MAIN 14 15 ;******************************************* 16 org 0030H ;Start program from 0030H 17 MAIN: 18 mov P0,#0FFH ;Initialize the port 19 mov P1,#0FFH 20 mov P2,#0FFH 21 mov P3,#0FFH 22 23 mov CURR_NUM,#00H ;Initilize the var,给变量赋值0 24 clr KEY_COMMON ;Clear the common line,公共端清零 25 26 MAIN_LOOP: 27 jb KEY_2,LAB_KEY_1 ;Wait for key down,ADD 28 call DELAY 29 call NUM_ADD 30 jmp NEXT_LOOP 31 32 LAB_KEY_1: 33 jb KEY_1,NEXT_LOOP ;Wait for key down,SUB 34 call DELAY 35 call NUM_SUB 36 jmp NEXT_LOOP 37 38 NEXT_LOOP: 39 call DISPLAY_NUM 40 call DELAY_DISP 41 jmp MAIN_LOOP 42 43 ret 44 ;**************************************************** 45 DISPLAY_NUM: 46 ;Get the code of led 47 mov a,CURR_NUM 48 mov dptr,#TAB_LED ;48,49行查断码 49 movc a,@a+dptr 50 51 ;Display the number 52 call sendTo74164 53 clr DIG_6 54 55 ret 56 ;******************************************* 57 ;Send data of A to chip 74LS164 58 sendTo74164: 59 push 07h 60 push acc 61 62 mov r7,#08 ;send 8 bits 63 SEND164_LOOP: 64 clr CLK_74164 ;clear clock-line for reading data 65 rlc a 66 mov DAT_74164,c ;move data-bit to data-line 67 setb CLK_74164 ;send data to 74164 68 djnz r7,SEND164_LOOP 69 clr CLK_74164 ;clear clock-line for reading data 70 71 pop acc 72 pop 07h 73 ret 74 ;**************************************************** 75 NUM_ADD: 76 ;Get next value 77 mov a,CURR_NUM ;当前变量赋给a 78 mov dptr,#TAB_NEXT ;表中的内容加载到指针 79 movc a,@a+dptr ;查表
80 mov CURR_NUM,a ;把查表查出来的值赋给a 81 82 ret 83 ;**************************************************** 84 NUM_SUB: 85 ;Get previos value 86 mov a,CURR_NUM 87 mov dptr,#TAB_PRE 88 movc a,@a+dptr 89 mov CURR_NUM,a 90 91 ret 92 ;**************************************************** 93 DELAY: 94 mov r7,#200 95 DELAY_LOOP: 96 mov r6,#200 97 djnz r6,$ 98 mov r6,#200 99 djnz r6,$ 100 101 djnz r7,DELAY_LOOP 102 ret 103 ;**************************************************** 104 DELAY_DISP: 105 mov r7,#10 106 DELAY_DISP_LOOP: 107 mov r6,#200 108 djnz r6,$ 109 mov r6,#200 110 djnz r6,$ 111 112 djnz r7,DELAY_DISP_LOOP 113 ret 114 ;**************************************************** 115 ;**************************************************** 116 ;LED code 117 TAB_LED: 118 DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H 119 ;=================================================== 120 ;For sub 121 TAB_PRE: 122 DB 09H,00H,01H,02H,03H,04H,05H,06H,07H,08H 123 ;=================================================== 124 ;For add 125 TAB_NEXT: 126 DB 01H,02H,03H,04H,05H,06H,07H,08H,09H,00H 127 ;**************************************************** 128 END
原文地址:http://www.cnblogs.com/luoxiaoluo/p/16800288.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性