1、 RET SCAN: 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 MOV A,R4 ;计算列值 CJNE A,#0EH,
2、NEXT4 MOV R4,#0 SJMP NEXT5 NEXT4: CJNE A,#0DH,NEXT6 MOV R4,#1 SJMP NEXT5 NEXT6: 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 NEXT11NEXT9: MOV R5,#3NEX
3、T11: 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 END2、设计包含两个按键S1、S2和一位数码管的系统。当S1按下时数码管显示的数增一,当增到9后,按下S1按键数值回到0;当S2按下时数码管显示的数减一,当减到0后,按下S2按键数值回到9。 LJMP MAIN MOV R5,
4、#0 LCALL KEY MOV A,R5 MOVC A,A+DPTR SJMP LOOPKEY: JB P1.0,KEY2 LCALL DELAY JB P1.0,KEY2 JNB P1.0,$ INC R5 CJNE R5,#10,NETNET: RETKEY2: JB P1.1,NET JB P1.1,NET JNB P1.1,$ DEC R5 CJNE R5,#0FFH,NET MOV R5,#9DELAY: MOV R6,#50 MOV R7,#100 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
5、3、设计60秒倒计时电路,完成程序设计,要求用定时器定时产生1秒的时间。 ORG 0000H LJMP MAIN ORG 000BH LJMP T0INT ORG 0030H MOV R5,#59 ;存放秒数 MOV R4,#20 MOV TMOD,#01H MOV TH0,#3CH ;定时50ms MOV TL0,#0B0H SETB EA SETB ET0 SETB TR0 LCALL DISPLAY SJMP LOOPT0INT: DJNZ R4,EXT DEC R5 CJNE R5,#0FFH,EXTEXT: RETI MOV A,R5 MOV B,#10 DIV AB MOV 40H
6、,A MOV 41H,B SETB P3.1 CLR P3.0 MOV A,40H MOVC A,A+DPTR MOV P2,A LCALL DELAY SETB P3.0 CLR P3.1 MOV A,41H MOV R6,#50 DJNZ R7,$ DJNZ R6,DL24、用定时器定时产生周期为1MS,占空比为60%的矩形波。 MOV R4,#10 MOV TMOD,#02H MOV TH0,#156 ;定时100US MOV TL0,#156 SJMP $ DJNZ R4,NEXT MOV R4,#10 SETB P3.7 RETINEXT: CJNE R4,#4,EXT CLR P3
7、.7 END 5、完成八盏发光二极管流水点亮的电路及程序设计,每个发光二极管点亮0.5秒。 MOV R4,#0FEH MOV P1,R4 MOV A,R4 RL A MOV R4,A MOV R5,#50DL1: DJNZ R5,DL16、用动态显示法完成8位数码管的显示,显示内容为“20100618”。 ORG 0000H ORG 0030H MOV 30H,#2 MOV 31H,#0 MOV 32H,#1 MOV 33H,#0 MOV 34H,#0 MOV 35H,#6 MOV 36H,#1 MOV 37H,#8 MOV R0,#30H MOV R2,#0FEHLOP1: MOV P3,R
8、2 MOV A,R0 INC R0 MOV A,R2 MOV R2,A CJNE R0,#38H,LOP1 MOV R6,#50 MOV R7,#50 DJNZ R7,$ DJNZ R6,DL27、简单编程题:1)编程查找内部RAM的30H一50H单元中是否有0FFH这一数。若查找到,则将52H单元置为01H,若未找到,则将51H单元置为00H。FIND: MOV R0,#30HNET2: CJNE A,#0FFH,NET MOV 52H,#01H INC R0 CJNE R0,#51H,NET2 MOV 51H,#00H2)两个字符串分别存放在首地址为42H和52H的内部RAM中,字符串长度
9、放在41H单元,请编程比较两个字符串。若相等,则把数字00H送40H单元,否则把0FFH送40H单元。COMP: MOV 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 MOVX DPTR,A INC DPTR4
10、)在内部RAM的41H单元开始存有一组单字节无符号数,数据长度为10,要求找出最小数存入40H单元。 FIND:MOV 40H,41H ;40H中存放最小的数CJNE A,40H,NET JNC NET2 MOV 40H,A ;当A小于40H单元的数时,小的数存入40H中 INC R0 CJNE R0,#4BH,LOOP5) 请编写能完成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,#5 MUL ABMOV 30H,A
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1