1、 SETB P3.0 CLR P3.1 MOV A,41H RETSCAN: MOV P1,#0FH;;行线送“0” MOV A,P1 ;读取列线值 ANL A,#0FH MOV R4,A ;列号信息 CJNE A,#0FH,NEXT1;若列线均为“1”则无键按下 SJMP NEXT3 NEXT1: ACALL D20MS ;有键按下,去除抖动 MOV P1,#0F0H ; ;列线送0 ANL A,#0F0H MOV R5,A ;行号信息 CJNE A,#0F0H,KCODE;若有键按下则键处理NEXT3: CLR F0 ;无键按下,F0为0KCODE: SETB F0 ;有键按下,F0为1
2、MOV A,R4 ;计算列值 CJNE A,#0EH,NEXT4 MOV R4,#0 SJMP NEXT5 NEXT4: CJNE A,#0DH,NEXT6 MOV R4,#1NEXT6: CJNE A,#0BH,NEXT7 MOV R4,#2 SJMP NEXT5NEXT7: MOV R4,#3NEXT5: MOV A,R5 ;计算行值 CJNE A,#0E0H,NEXT8 MOV R5,#0 SJMP NEXT11 NEXT8: CJNE A,#0D0H,NEXT10 MOV R5,#1NEXT10: CJNE A,#0B0H,NEXT9 MOV R5,#2 SJMP NEXT11NEXT
3、9: MOV R5,#3NEXT11: MOV A,R5 MOV B,#4 MUL AB ADD A,R4 MOV 30H,A ;键值放在30H单元D20MS: MOV R6,#50DL2: MOV R7,#100 DJNZ R7,$ DJNZ R6,DL2TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H END_第二题:设计包含两个按键S1、S2和一位数码管的系统。当S1按下时数码管显示的数增一,当增到9后,按下S1按键数值回到0;当S2按下时数码管显示的数减一,当减到0后,按下S2按键数值回到9。
4、 ORG 0000H ORG 0030H LCALL KEYKEY: JB P1.0,KEY2 LCALL DELAY JNB P1.0,$ INC R5 CJNE R5,#10,NETNET:KEY2: JB P1.1,NET JNB P1.1,$ DEC R5 CJNE R5,#0FFH,NET MOV R5,#9DELAY: MOV R6,#50 MOV R7,#100 DJNZ R7,$ DJNZ R6,DL2第三题:设计60秒倒计时电路,完成程序设计,要求用定时器定时产生1秒的时间。 ORG 000BH LJMP T0INT MOV R5,#59 ;存放秒数 MOV R4,#20 M
5、OV TMOD,#01H MOV TH0,#3CH ;定时50ms MOV TL0,#0B0H SETB EA SETB ET0 SETB TR0T0INT: DJNZ R4,EXT CJNE R5,#0FFH,EXTEXT: RETIMOV A,R5第四题:用定时器定时产生周期为1MS,占空比为60%的矩形波。 MOV R4,#10 MOV TMOD,#02H MOV TH0,#156 ;定时100US MOV TL0,#156 SJMP $ DJNZ R4,NEXT MOV R4,#10 SETB P3.7NEXT: CJNE R4,#4,EXT CLR P3.7 END 第五题:完成八盏
6、发光二极管流水点亮的电路及程序设计,每个发光二极管点亮0.5秒。 MOV R4,#0FEH MOV P1,R4 MOV A,R4 RL A MOV R4,A MOV R5,#50DL1: MOV R6,#50 DJNZ R5,DL1第六题:用动态显示法完成8位数码管的显示,显示内容为“20100618”。 MOV 30H,#2 MOV 31H,#0 MOV 32H,#1 MOV 33H,#0 MOV 34H,#0 MOV 35H,#6 MOV 36H,#1 MOV 37H,#8MOV R0,#30H MOV R2,#0FEHLOP1: MOV P3,R2 MOV A,R0 INC R0 MOV
7、 A,R2 MOV R2,A CJNE R0,#38H,LOP1 MOV R7,#50第七题:简单编程题:1)编程查找内部RAM的30H一50H单元中是否有0FFH这一数。若查找到,则将52H单元置为01H,若未找到,则将51H单元置为00H。FIND: MOV R0,#30HNET2: CJNE A,#0FFH,NET MOV 52H,#01H CJNE R0,#51H,NET2 MOV 51H,#00H2)两个字符串分别存放在首地址为42H和52H的内部RAM中,字符串长度放在41H单元,请编程比较两个字符串。若相等,则把数字00H送40H单元,否则把0FFH送40H单元。COMP: MO
8、V R7,41H MOV R0,#42H MOV R1,#52H MOV 30H,A MOV A,R1 CJNE A,30H,NET INC R1 DJNZ R7,LOOP MOV 40H,#00H MOV 40H,#0FFH3)在外部RAM首地址为TABLE的数据表中有10个字节数据,请编程将每个字节的最高位无条件地置1。ZHIGA: MOV DPTR,#TABLE MOV R7,#10 MOVX A,DPTR ORL A,#80H MOV X DPTR,A4)在内部RAM的41H单元开始存有一组单字节无符号数,数据长度为10,要求找出最小数存入40H单元。 FIND:MOV 40H,41H
9、 ;40H中存放最小的数CJNE A,40H,NET JNC NET2 MOV 40H,A ;当A小于40H单元的数时,小的数存入40H中 INC R0 CJNE R0,#4BH,LOOP RET5) 请编写能完成16位二进制数67D3H减去23F9H运算的程序,计算结果的高8位和低8位分别放在内部数据存储器的30H和31H单元。CAL: MOV A,#0D3H CLR C SUBB A,#0F9H MOV 31H,A MOV A,#67H SUBB A,#23H MOV 30H,A6)存放在外部数据存储器2000H单元的自变量X为一无符号数,函数Y存放在内部数据存储器30H单元中,请编写满足如下关系的程序: MOV DPTR,#2000H CJNE A,#40,NET MOV B,#5MOV 30H,A
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1