1、 JMP DISPLAY2DISPLAY1:MOV R2,#00H JMP A1DISPLAY2:MOV R2,#04HA1: MOV A,R3 MOV DPTR,#7F01H MOV DPTR,#1000H MOV A,R2 MOVC A,A+DPTR MOV DPTR,#7F02H CALL DLIMS INC R2 RL A MOV R3,A JNB ACC.4,BEGINDLIMS:MOV R7,#05HDL0:MOV R6,#0FFHDL1:DJNZ R6,DL1 DJNZ R7,DL0RETEND5479EBA(2)编程实现键盘并能左移显示:ACALL DIS ACALL CLEA
2、R ACALL CCSCAN JNZ INK1AJMP BEGININK1: ACALL DLIMS JNZ INK2 AJMP BEGININK2:MOV R2,#0FEH MOV R4,#00HCOLUM:MOV DPTR,#7F01H INC DPTR MOVX A,DPTR JB ACC.3,LONE MOV A,#00H AJMP KCODELONE:JB.ACC.2,NEXT MOV A,#04HKCODE:ADD A,R4 ACALL PUTBUF PUSH ACCKON:ACALL CCSCANJNZ KONPOP ACCNEXT: INC R4 JNB ACC.4,KEER
3、MOV R2,A AJMP COLUMKERR:CCSCAN: MOV DPTR,A MOVX A ,DPTR CPL A ANL A,#0CH RETCLEAR:DIS: PUSH ACC PUSH 00H PUSH 03H MOV R0,#05H MOV R3,#0F7HAGAIN: MOV A,R0 MOV DPTR,#DDEG INC R0 JNB ACC.0,OUT RR A AJMP AGAINOUT: POP 03H POP 00H POP ACCDDEG:DB 0EE,3EH,9EH,7AH DB 0E6H,0E0H,66H,0B6HMOV R7,#01HPUTBUF:PUSH
4、 00H MOV R7,A MOV A,51H MOV 50H,A MOV A,52H MOV 51H,A MOV A,53H MOV 52H,A MOV A,R7(3)程序实现单片机售票机,以下要求:a)当k0=1时,键入地址、价钱、SET,设置某个地址的票价,该机至少可连续设置三个不同地址的价钱:上海864元、北京756元、广州819元。b)当k0=0时,键入一个地址,购买的张数,按SET 得到总价,再键入另一个地址、购买的张数,按SET即得总价,可计得至少三个地址的合总价。#includeabsacc.h#define uchar unsigned char#define pcon XB
5、YTE0X7F00#define pa XBYTE0X7F01#define pb XBYTE0X7F02#define pc XBYTE0X7F03#define led0 DBYTE0x50#define led1 DBYTE0x51#define led2 DBYTE0x52#define led3 DBYTE0x53#define keynum DBYTE0x54uchar bdata da;sbit pc2=da2;sbit pc3=da3;sbit k0=da1;sbit p26=P26;uchar code table=0XFC,0X60,0XBA,0XF2,0X66,0XB6,
6、0XBE,0XE0,0XFE,0XE6;uchar code ctrl4=0XFE,0XFD,0XFB,0XF7;void Init() p26=1; pa=0x00; pcon=0x03;Void Delay(int sec) int i,j; for(i=0;isec;i+) for(j=0;j=3&keynumsadd /5 sadd=keynum; status=2; numbuff3=numbuff2=numbuff1=numbuff0=0; /5 /4 /address/ else if(status=2)/count switch(keynum) case 7: /6 if(nu
7、mbuff3=9)numbuff3=0; else numbuff3+; break; /6 case 8: if(numbuff2=9)numbuff2=0; else numbuff2+; case 1: if(numbuff1=9)numbuff1=0; else numbuff1+; case 2: if(numbuff0=9)numbuff0=0; else numbuff0+; case 6: if(sadd /7 countsadd-3=numbuff0*1000+numbuff1*100+numbuff2*10+numbuff3; totalprice+=countsadd-3
8、*pricesadd-3; numbuff0=totalprice/1000; temp=totalprice-numbuff0*1000; numbuff1=temp/100; temp=temp-numbuff1*100; numbuff2=temp/10; temp=temp-numbuff2*10; numbuff3=temp; sadd=0; status=0; /7 /switch/ /else if status=2/ /3 /k0=0/ /数据处理/ /2 led0=tablenumbuff0; led1=tablenumbuff1; led2=tablenumbuff2; led3=tablenumbuff3; Display(); Delay(10); /1/0
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1