c语言_源代码-波形发生器_程序清单

上传人:mg****85 文档编号:34158939 上传时间:2018-02-21 格式:DOC 页数:13 大小:159.50KB
返回 下载 相关 举报
c语言_源代码-波形发生器_程序清单_第1页
第1页 / 共13页
c语言_源代码-波形发生器_程序清单_第2页
第2页 / 共13页
c语言_源代码-波形发生器_程序清单_第3页
第3页 / 共13页
c语言_源代码-波形发生器_程序清单_第4页
第4页 / 共13页
c语言_源代码-波形发生器_程序清单_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《c语言_源代码-波形发生器_程序清单》由会员分享,可在线阅读,更多相关《c语言_源代码-波形发生器_程序清单(13页珍藏版)》请在金锄头文库上搜索。

1、波形发生器程序清单:ORG 0000HAJMP MAINORG 0000BHLJMP TOINTORG 0030HMAIN: MOV A, #30HMOV SP, AMOV 40H, #00H ;波形显初值MOV 41H, #00H ;频率显示初值MOV 42H, #00HMOV 43H, #00HMOV 44H, #00HMOV 45H, #00H ;参考电压显示初值MOV 46H, #00H ;设置标志初值MOV DPTR, #7FFCH ;初始化 8255MOV A, #90HMOVX DPTR, A;LED 显示子程序;DISPLAY: MOV R2, H06H ;显示子程序MOV R

2、1, #80H MOV R0, #40HDIS1: MOV DPTR, #7FFEH ;指向 B 口MOV A, R1MOVX DPTR, A RR A ;形成下一次位选信号MOV R1 AMOV A, R0 ;取显示数字MOV DPTR, #DISPLAYTABMOVC A, A+DPTR ;由数字转换成显示段码MOV DPTR, #7EFFH ;指向 A 口MOV DPTR, A ;送段码到 A 口LCALL DELAY ;显示延时INC R0DJNZ R2, DIS1 ;判断是否显示 6 次MOV A, #00HMOV P1, A ;熄灭波形指示灯AJMP KEYSPAN ;转到键盘管理

3、子程序DELAY: MOV R3, #80H ;延时LOOP1: MOV R4, #0A0HDJNZ R4, $DJNZ R3, LOOP1 RETDISPLAYTAB: DB 3FH, 06H, 5BH, 4FH, 66H ;0 1 2 3 4 DB 6DH, 7DH, 07H, 7FH, 6FH ;5 6 7 8 9DB 40H ;键盘管理子程序;KEY SPAN: MOV A, #F0HCLR P2.7MOV R0, #FDH ;指向 C 口MOVX R0, A ;输出列扫描查询码MOV A, R0 ;读入行状态CJNE A, F0H, KEY1 ;有键闭合、转 KEY1LJMP KEY

4、SPANEND ;无键闭合、退出KEY1: LCALL DELAY10ms ;延时、去抖动CLR IE ;关闭定时中断MOV R1, #FEHKEY2: MOV A, R1CLR P2.7MOVX R0, A ;输出列扫描码MOVX A, R0 ;读入行状态和列状态ANL A, #F0H ;保留行状态CJNE A, #F0H, KEY3 ;有键闭合、转 KEY3,无键闭合形成下一次列扫描码,并判断是否扫描四次MOV A, R1RL AMOV R1, AJB ACC.3, KEY2LJMP KEYSPANEND ;四次列扫描完毕,退出KEY3: MOV R2, A ;行码送 R2 中保存MOV

5、A, R1 ;扫描码送 A 中ANL A, #0FH ;保留列码(低 4 位)ORL A, R2 ;列码在低 4 位,行码在高 4 位MOV R2, A ;列行码值保存在 R2MOV DPTR, #KEYTAB ;指向键特征值表MOV R1, #00H ;从键值 0 开始比对KEY4: CLR AMOVC A, A+DPTR ;取特征值XRL A, R2 ;列行码值与特征值比对JZ KEY5 ;A=0 找到键特征值,转KEY5 INC R1 ;形成下一个键值INC DPTR ;形成下一个特征值地址CJNE R1, #10H, KEY4 ;判断是否比对了 16 次,R110H,转 KEY4,否则

6、,顺序执行LJMP KEYSPANEND ;退出KEY5: MOV A, #F0HCLR P2.7MOVC R0, A ;输出查询码MOVC A, R0 ;读入状态SETB P2.7CJNE A, #F0H, KEY5 ;等待键释放LCALL KEYPROCESS ;调用键功能子程序KEYSPANEND: LJMP DISPLAY ;返回到 LED 显示子程序开始处DELAY10ms: MOV R3, #0C8HLOOP2: MOV R4, #0A0HDJNZ R4, $DJNZ R3, LOOP2RET;键特征值表;KEYTAB:DB EEH, EDH, EBH, E7H ;0 1 2 3D

7、B DEH, DDH, DBH, D7H ;4 5 6 7DB CEH, CDH, CBH, C7H ;8 9 EN CLDB 7EH, 7DH, 7BH, 77H ;W F V .;键功能散转;KWYREOCESS:MOV A, R1RL AMOV DPTR, #KEYPROTABJMP A+DPTRKEYPROTAB: AJMP KEY_0_PROAJMP KEY_1_PROAJMP KEY_2_PROAJMP KEY_3_PROAJMP KEY_4_PROAJMP KEY_5_PROAJMP KEY_6_PROAJMP KEY_7_PROAJMP KEY_8_PROAJMP KEY_9_

8、PROAJMP KEY_EN_PROAJMP KEY_CL_PROAJMP KEY_W_PROAJMP KEY_F_PROAJMP KEY_V_PROAJMP KEY_PRO;键功能处理子程序;KEY_0_PRO: MOV A, 46H ;“0”键处理子程序CJNE A, #00H, D01SJMP D0ENDD01: CJNE A, #01H, D0ENDCJNE R5, #43H, D02SJMP D0ENDD02: MOV R5, #0HINC R5D0END: RETKEY_1_PRO: MOV A, #46H ;“1”键处理子程序CJNE A, #00H, D11AJMP D1END

9、D11: CJNE A, #01H, D12CJNE R5,#43H, F1AJMP D1ENDF1: MOV R5, #01HINC R5AJMP D1ENDD12: CJNE A, #02H, D13MOV 45H, #01HSJMP D1ENDD13: MOV 40H, #01HD1END: RETKEY_2_PRO: MOV A, #46H ;“2”键处理子程序CJNE A, #00H, D21AJMP D2ENDD21: CJNE A, #01H, D22CJNE R5,#43H, F2AJMP D2ENDF2: MOV R5, #02HINC R5AJMP D2ENDD22: CJ

10、NE A, #02H, D23MOV 45H, #02HSJMP D2ENDD23: MOV 40H, #02HD2END: RETKEY_3_PRO: MOV A, #46H ;“3”键处理子程序CJNE A, #00H, D31AJMP D3ENDD31: CJNE A, #01H, D32CJNE R5,#43H, F3AJMP D3ENDF3: MOV R5, #03HINC R5AJMP D3ENDD32: CJNE A, #02H, D33MOV 45H, #03HSJMP D3ENDD33: MOV 40H, #03HD3END: RETKEY_4_PRO: MOV A, #46

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号