C语言源代码波形发生器程序清单.docx
- 文档编号:7225803
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:14
- 大小:17.96KB
C语言源代码波形发生器程序清单.docx
《C语言源代码波形发生器程序清单.docx》由会员分享,可在线阅读,更多相关《C语言源代码波形发生器程序清单.docx(14页珍藏版)》请在冰豆网上搜索。
C语言源代码波形发生器程序清单
波形发生器程序清单:
ORG0000H
AJMPMAIN
ORG0000BH
LJMPTOINT
ORG0030H
MAIN:
MOVA,#30H
MOVSP,A
MOV40H,#00H;波形显初值
MOV41H,#00H;频率显示初值
MOV42H,#00H
MOV43H,#00H
MOV44H,#00H
MOV45H,#00H;参考电压显示初值
MOV46H,#00H;设置标志初值
MOVDPTR,#7FFCH;初始化8255
MOVA,#90H
MOVX@DPTR,A
;…………………LED显示子程序……………………………………………………;
DISPLAY:
MOVR2,H06H;显示子程序
MOVR1,#80H
MOVR0,#40H
DIS1:
MOVDPTR,#7FFEH;指向B口
MOVA,R1
MOVX@DPTR,A
RRA;形成下一次位选信号
MOVR1A
MOVA,@R0;取显示数字
MOVDPTR,#DISPLAYTAB
MOVCA,@A+DPTR;由数字转换成显示段码
MOVDPTR,#7EFFH;指向A口
MOV@DPTR,A;送段码到A口
LCALLDELAY;显示延时
INCR0
DJNZR2,DIS1;判断是否显示6次
MOVA,#00H
MOVP1,A;熄灭波形指示灯
AJMPKEYSPAN;转到键盘管理子程序
DELAY:
MOVR3,#80H;延时
LOOP1:
MOVR4,#0A0H
DJNZR4,$
DJNZR3,LOOP1
RET
DISPLAYTAB:
DB3FH,06H,5BH,4FH,66H;01234
DB6DH,7DH,07H,7FH,6FH;56789
DB40H;—
;…………………键盘管理子程序……………………………………………………;
KEYSPAN:
MOVA,#F0H
CLRP2.7
MOVR0,#FDH;指向C口
MOVX@R0,A;输出列扫描查询码
MOVA,@R0;读入行状态
CJNEA,F0H,KEY1;有键闭合、转KEY1
LJMPKEYSPANEND;无键闭合、退出
KEY1:
LCALLDELAY10ms;延时、去抖动
CLRIE;关闭定时中断
MOVR1,#FEH
KEY2:
MOVA,R1
CLRP2.7
MOVX@R0,A;输出列扫描码
MOVXA,@R0;读入行状态和列状态
ANLA,#F0H;保留行状态
CJNEA,#F0H,KEY3;有键闭合、转KEY3,无键闭合形成下一次列
扫描码,并判断是否扫
描四次
MOVA,R1
RLA
MOVR1,A
JBACC.3,KEY2
LJMPKEYSPANEND;四次列扫描完毕,退出
KEY3:
MOVR2,A;行码送R2中保存
MOVA,R1;扫描码送A中
ANLA,#0FH;保留列码(低4位)
ORLA,R2;列码在低4位,行码在高4位
MOVR2,A;列行码值保存在R2
MOVDPTR,#KEYTAB;指向键特征值表
MOVR1,#00H;从键值0开始比对
KEY4:
CLRA
MOVCA,@A+DPTR;取特征值
XRLA,R2;列行码值与特征值比对
JZKEY5;A=0找到键特征值,转KEY5
INCR1;形成下一个键值
INCDPTR;形成下一个特征值地址
CJNER1,#10H,KEY4;判断是否比对了16次,R1≠10H,转KEY4,
否则,顺序执行
LJMPKEYSPANEND;退出
KEY5:
MOVA,#F0H
CLRP2.7
MOVC@R0,A;输出查询码
MOVCA,@R0;读入状态
SETBP2.7
CJNEA,#F0H,KEY5;等待键释放
LCALLKEYPROCESS;调用键功能子程序
KEYSPANEND:
LJMPDISPLAY;返回到LED显示子程序开始处
DELAY10ms:
MOVR3,#0C8H
LOOP2:
MOVR4,#0A0H
DJNZR4,$
DJNZR3,LOOP2
RET
;…………………………键特征值表…………………………………………………………;
KEYTAB:
DBEEH,EDH,EBH,E7H;0123
DBDEH,DDH,DBH,D7H;4567
DBCEH,CDH,CBH,C7H;89ENCL
DB7EH,7DH,7BH,77H;WFV.
;………………………键功能散转………………………………………………………;
KWYREOCESS:
MOVA,R1
RLA
MOVDPTR,#KEYPROTAB
JMP@A+DPTR
KEYPROTAB:
AJMPKEY_0_PRO
AJMPKEY_1_PRO
AJMPKEY_2_PRO
AJMPKEY_3_PRO
AJMPKEY_4_PRO
AJMPKEY_5_PRO
AJMPKEY_6_PRO
AJMPKEY_7_PRO
AJMPKEY_8_PRO
AJMPKEY_9_PRO
AJMPKEY_EN_PRO
AJMPKEY_CL_PRO
AJMPKEY_W_PRO
AJMPKEY_F_PRO
AJMPKEY_V_PRO
AJMPKEY_·_PRO
;………………………………键功能处理子程序………………………………………………;
KEY_0_PRO:
MOVA,46H;“0”键处理子程序
CJNEA,#00H,D01
SJMPD0END
D01:
CJNEA,#01H,D0END
CJNER5,#43H,D02
SJMPD0END
D02:
MOV@R5,#0H
INCR5
D0END:
RET
KEY_1_PRO:
MOVA,#46H;“1”键处理子程序
CJNEA,#00H,D11
AJMPD1END
D11:
CJNEA,#01H,D12
CJNER5,#43H,F1
AJMPD1END
F1:
MOV@R5,#01H
INCR5
AJMPD1END
D12:
CJNEA,#02H,D13
MOV45H,#01H
SJMPD1END
D13:
MOV40H,#01H
D1END:
RET
KEY_2_PRO:
MOVA,#46H;“2”键处理子程序
CJNEA,#00H,D21
AJMPD2END
D21:
CJNEA,#01H,D22
CJNER5,#43H,F2
AJMPD2END
F2:
MOV@R5,#02H
INCR5
AJMPD2END
D22:
CJNEA,#02H,D23
MOV45H,#02H
SJMPD2END
D23:
MOV40H,#02H
D2END:
RET
KEY_3_PRO:
MOVA,#46H;“3”键处理子程序
CJNEA,#00H,D31
AJMPD3END
D31:
CJNEA,#01H,D32
CJNER5,#43H,F3
AJMPD3END
F3:
MOV@R5,#03H
INCR5
AJMPD3END
D32:
CJNEA,#02H,D33
MOV45H,#03H
SJMPD3END
D33:
MOV40H,#03H
D3END:
RET
KEY_4_PRO:
MOVA,#46H:
“4”键处理子程序
CJNEA,#00H,D41
AJMPD4END
D41:
CJNEA,#01H,D42
CJNER5,#43H,F4
AJMPD4END
F4:
MOV@R5,#04H
INCR5
AJMPD4END
D42:
CJNEA,#02H,D43
MOV45H,#04H
SJMPD4END
D43:
MOV40H,#04H
D4END:
RET
KEY_5_PRO:
MOVA,46H;“5”键处理子程序
CJNEA,#00H,D51
AJMPD5END
D51:
CJNEA,#01H,D52
CJNER7,#44H,F5
AJMPD5END
F5:
MOV@R5,#00H
INCR5
AJMPD5END
D52:
CJNEA,#02H,D53
MOV45,#05H
D53:
RET
KEY_6_PRO:
RET;“6”键处理子程序
KEY_7_PRO:
RET;“7”键处理子程序
KEY_8_PRO:
RET;“8”键处理子程序
KEY_9_PRO:
RET;“9”键处理子程序
KEY_EN_PRO:
MOVA,40H
CJNEA,#00H,EN1
AJMPENEND
EN1:
MOVA,45H
CJNEA,#00H,VREF
AJMPENEND
VREF:
DPTR,#VREFTAB
MOVCA,@A+DPTR
MOVR0,#FFH
CLRP2.5;选中0832
(1)
MOCX@R0,A;向0832
(1)送参考电压编码
MOVA,41H
ORLA,42H
ORLA,43H
CJNEA,#00H,1KHZ
AJMPENEND
1KHZ:
MOVA,41H;1KHZ设置定时初值
CJNEA,#01H,500HZ
MOVTMOD,#00H
MOVTLO,#01H
MOVTHO,#0FFH
AJMPOPEN_TI0
500HZ:
MOVA,42H;500HZ设置定时初值
CJNEA,#05H,200HZ
MOVTMOD,#00H
MOVTLO,#01H
MOVTHO,#0FEH
AJMPOPEN_TI0
200HZ:
CJNEA,#02H,100HZ;200HZ设置定时初值
MOVTMOD,#00H
MOVTLO,#03H
MOVTHO,#0FBH
AJMPOPEN_TI0
100HZ:
CJNEA,#01H,50HZ;100HZ设置定时初值
MOVTMOD,#00H
MOVTLO,#08H
MOVTHO,#0F6H
AJMPOPEN_TI0
50HZ:
MOVA,43H;50HZ设置定时初值
CJNEA,#05H,20HZ
MOVTMOD,#00H
MOVTLO,#0FH
MOVTHO,#0ECH
AJMPOPEN_TI0
20HZ:
CJNEA,#02H,10HZ;20HZ设置定时初值
MOVTMOD,#00H
MOVTLO,#16H
MOVTHO,#90H
AJMPOPEN_TI0
10HZ:
CJNEA,#01H,ENEND;10HZ设置定时初值
MOVTMOD,#00H
MOVTLO,#0BH
MOVTHO,#9EH
AJMPOPEN_TI0
OPEN_TI0:
MOVTCON,#10H;定时器0工作,运行位TR控制
MOVIE,82H;中断允许总控制,定时器0中断允许
MOVR6,#00H;样值初始编号
ENEND:
RET
VREFTAB:
DB32H,68H,A2H,CDH,FFH;1V2V3V4V5V
KEY_CL_PRO:
MOVA,#00H ;“CL”键处理子程序
MOVR0,#40H
CL1:
MOV@R0,#40H
INCR0
CJNER0,#46H,CL1
MOVR5,A
MOVTL0,#00H
MOVTH0,#00H
CLRTR0
RET
KEY_F_PRO:
MOVA,#01H ;“F”处理子程序
MOV46H,A;(46H)=01H表示频率设置
MOVR5,42H
MOV41H#0AH;频率LED位显示“---0”
MOV42H#0AH
MOV43H#0AH
RET
KEY_V_PRO:
MOVA,#02H;“V”处理子程序
MOV46H,A;(46H)=02H表示参考电压设置
MOV45H#0AH ;电压LED位显示“—”
RET
KEY_W_PRO:
MOVA,#03H;“W”处理子程序
MOV46H,A ;(46H)=03H表示波形选择
MOV40H#0AH;波形LED位显示“—”
RET
KEY_·_PRO:
RET;“·”处理子程序
;…………………………定时中断服务程序……………………………………………………;
TOINT:
PUSHPSW
PUSHACC
PUSHDPH
PUSHDPL
PUSHR0
PUSHR1
PUSHR2
PUSHR3
PUSHR4;保护现场
MOVR7,40H
LCALLWAVE1 ;调用波形产生子程序
POPR4
POPR3
POPR2
POPR1
POPR0
POPDPL
POPDPH
POPACC
POPPSW ;恢复现场
RETI ;返回断点处,执行主程序
;…………………………波形产生子程序……………………………………………………;
WAVE1:
CJNER7,#01H,WAVE2
CLRP1.0
MOVDPTR,#W_TAB1;指向方波表首址
MOVA,R6
MOVCA,@A+DPTR
MOVDPTR,#0AFFFH;指向DAC0832
(2)
MOVX@DPTR,A
MOVA,R6
INCA
MOVR6,A;指向下一个样值
CJNEA,#32,W_END
MOVR6,#00H
AJMPW_END
WAVE2:
CJNER7,#02H,WAVE3
CLRP1.1
MOVDPTR,#W_TAB2;指向正弦波表首址
MOVA,R6
MOVCA,@A+DPTR
MOVDPTR,#0AFFFH;指向DAC0832
(2)
MOVX@DPTR,A
MOVA,R6
INCA
MOVR6,A;指向下一个样值
CJNEA,#32,W_END
MOVR6,#00H
AJMPW_END
WAVE3:
CJNER7,#03H,WAVE4
CLRP1.2
MOVDPTR,#W_TAB3;指向三角波表首址
MOVA,R6
MOVCA,@A+DPTR
MOVDPTR,#0AFFFH;指向DAC0832
(2)
MOVX@DPTR,A
MOVA,R6
INCA
MOVR6,A;指向下一个样值
CJNEA,#32,W_END
MOVR6,#00H
AJMPW_END
WAVE4:
CJNER7,#04H,W_END
CLRP1.3
MOVDPTR,#W_TAB4;指向锯齿波表首址
MOVA,R6
MOVCA,@A+DPTR
MOVDPTR,#0AFFFH;指向DAC0832
(2)
MOVX@DPTR,A
MOVA,R6
INCA
MOVR6,A;指向下一个样值
CJNEA,#32,W_END
MOVR6,#00H
W_END:
RET;返回中断服务程序执行
;……………………………波形样值表……………………………………………………;
W_TAB1:
DB0FFH,FFH,FFH,FFH,FFH,FFH,FFH,FFH
DB0FFH,FFH,FFH,FFH,FFH,FFH,FFH,FFH
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H
W_TAB2:
DB98H,B0H,C6H,D9H,E9H,F5H,FCH,FFH
DBFCH,F5H,E9H,D9H,C6H,B0H,98H,7FH
DB66H,4EH,38H,25H,15H,0AH,02H,00H
DB02H,0AH,15H,25H,38H,4EH,66H,7FH
W_TAB3:
DB8FH,9FH,0AFH,BFH,CFH,DFH,EFH,FFH
DBEFH,DFH,CFH,BFH,AFH,9FH,8FH,7FH
DB6FH,5FH,4FH,3FH,2FH,1FH,0FH,00H
DB0FH,1FH,2FH,3FH,4FH,5FH,6FH,7FH
W_TAB4:
DB0FH,17H,1FH,27H,2FH,37H,3FH,47H
DB4FH,57H,5FH,67H,6FH,77H,7FH,87H
DB8FH,97H,9FH,A7H,AFH,B7H,BFH,C7H
DBCFH,D7H,DFH,E7H,EFH,F7H,FFH,07H
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 源代码 波形 发生器 程序 清单