| keil里可以直接转换,位置就在你仿真以后的代码转换里。 |
| Q0000: AJMP Q016A ;0000 21 6A NOP ;0002 00 NOP ;0003 00 NOP ;0004 00 NOP ;0005 00 NOP ;0006 00 NOP ;0007 00 NOP ;0008 00 NOP ;0009 00 NOP ;000A 00 NOP ;000B 00 NOP ;000C 00 NOP ;000D 00 NOP ;000E 00 NOP ;000F 00 NOP ;0010 00 NOP ;0011 00 NOP ;0012 00 NOP ;0013 00 NOP ;0014 00 NOP ;0015 00 NOP ;0016 00 NOP ;0017 00 NOP ;0018 00 NOP ;0019 00 NOP ;001A 00 NOP ;001B 00 NOP ;001C 00 NOP ;001D 00 NOP ;001E 00 NOP ;001F 00 NOP ;0020 00 NOP ;0021 00 NOP ;0022 00 NOP ;0023 00 NOP ;0024 00 NOP ;0025 00 NOP ;0026 00 NOP ;0027 00 NOP ;0028 00 NOP ;0029 00 NOP ;002A 00 NOP ;002B 00 NOP ;002C 00 NOP ;002D 00 NOP ;002E 00 NOP ;002F 00 NOP ;0030 00 NOP ;0031 00 NOP ;0032 00 NOP ;0033 00 NOP ;0034 00 NOP ;0035 00 NOP ;0036 00 NOP ;0037 00 NOP ;0038 00 NOP ;0039 00 NOP ;003A 00 NOP ;003B 00 NOP ;003C 00 NOP ;003D 00 NOP ;003E 00 NOP ;003F 00 NOP ;0040 00 NOP ;0041 00 NOP ;0042 00 NOP ;0043 00 NOP ;0044 00 NOP ;0045 00 NOP ;0046 00 NOP ;0047 00 NOP ;0048 00 NOP ;0049 00 NOP ;004A 00 NOP ;004B 00 NOP ;004C 00 NOP ;004D 00 NOP ;004E 00 NOP ;004F 00 NOP ;0050 00 NOP ;0051 00 NOP ;0052 00 NOP ;0053 00 NOP ;0054 00 NOP ;0055 00 NOP ;0056 00 NOP ;0057 00 NOP ;0058 00 NOP ;0059 00 NOP ;005A 00 NOP ;005B 00 NOP ;005C 00 NOP ;005D 00 NOP ;005E 00 NOP ;005F 00 NOP ;0060 00 NOP ;0061 00 NOP ;0062 00 NOP ;0063 00 NOP ;0064 00 NOP ;0065 00 NOP ;0066 00 NOP ;0067 00 NOP ;0068 00 NOP ;0069 00 NOP ;006A 00 NOP ;006B 00 NOP ;006C 00 NOP ;006D 00 NOP ;006E 00 NOP ;006F 00 NOP ;0070 00 NOP ;0071 00 NOP ;0072 00 NOP ;0073 00 NOP ;0074 00 NOP ;0075 00 NOP ;0076 00 NOP ;0077 00 NOP ;0078 00 NOP ;0079 00 NOP ;007A 00 NOP ;007B 00 NOP ;007C 00 NOP ;007D 00 NOP ;007E 00 NOP ;007F 00 NOP ;0080 00 NOP ;0081 00 NOP ;0082 00 NOP ;0083 00 NOP ;0084 00 NOP ;0085 00 NOP ;0086 00 NOP ;0087 00 NOP ;0088 00 NOP ;0089 00 NOP ;008A 00 NOP ;008B 00 NOP ;008C 00 NOP ;008D 00 NOP ;008E 00 NOP ;008F 00 NOP ;0090 00 NOP ;0091 00 NOP ;0092 00 NOP ;0093 00 NOP ;0094 00 NOP ;0095 00 NOP ;0096 00 NOP ;0097 00 NOP ;0098 00 NOP ;0099 00 NOP ;009A 00 NOP ;009B 00 NOP ;009C 00 NOP ;009D 00 NOP ;009E 00 NOP ;009F 00 NOP ;00A0 00 NOP ;00A1 00 NOP ;00A2 00 NOP ;00A3 00 NOP ;00A4 00 NOP ;00A5 00 NOP ;00A6 00 NOP ;00A7 00 NOP ;00A8 00 NOP ;00A9 00 NOP ;00AA 00 NOP ;00AB 00 NOP ;00AC 00 NOP ;00AD 00 NOP ;00AE 00 NOP ;00AF 00 NOP ;00B0 00 NOP ;00B1 00 NOP ;00B2 00 NOP ;00B3 00 NOP ;00B4 00 NOP ;00B5 00 NOP ;00B6 00 NOP ;00B7 00 NOP ;00B8 00 NOP ;00B9 00 NOP ;00BA 00 NOP ;00BB 00 NOP ;00BC 00 NOP ;00BD 00 NOP ;00BE 00 NOP ;00BF 00 NOP ;00C0 00 NOP ;00C1 00 NOP ;00C2 00 NOP ;00C3 00 NOP ;00C4 00 NOP ;00C5 00 NOP ;00C6 00 NOP ;00C7 00 NOP ;00C8 00 NOP ;00C9 00 NOP ;00CA 00 NOP ;00CB 00 NOP ;00CC 00 NOP ;00CD 00 NOP ;00CE 00 NOP ;00CF 00 NOP ;00D0 00 NOP ;00D1 00 NOP ;00D2 00 NOP ;00D3 00 NOP ;00D4 00 NOP ;00D5 00 NOP ;00D6 00 NOP ;00D7 00 NOP ;00D8 00 NOP ;00D9 00 NOP ;00DA 00 NOP ;00DB 00 NOP ;00DC 00 NOP ;00DD 00 NOP ;00DE 00 NOP ;00DF 00 NOP ;00E0 00 NOP ;00E1 00 NOP ;00E2 00 NOP ;00E3 00 NOP ;00E4 00 NOP ;00E5 00 NOP ;00E6 00 NOP ;00E7 00 NOP ;00E8 00 NOP ;00E9 00 NOP ;00EA 00 NOP ;00EB 00 NOP ;00EC 00 NOP ;00ED 00 NOP ;00EE 00 NOP ;00EF 00 NOP ;00F0 00 NOP ;00F1 00 NOP ;00F2 00 NOP ;00F3 00 NOP ;00F4 00 NOP ;00F5 00 NOP ;00F6 00 NOP ;00F7 00 NOP ;00F8 00 NOP ;00F9 00 NOP ;00FA 00 NOP ;00FB 00 NOP ;00FC 00 NOP ;00FD 00 NOP ;00FE 00 NOP ;00FF 00 JB 24H.1,Q0124 ;0100 20 21 21 JB 28H.1,Q0126 ;0103 20 41 20 ORL A,R5 ;0106 4D JB 28H.1,Q012A ;0107 20 41 20 ANL A,R2 ;010A 5A JB 29H.1,Q012E ;010B 20 49 20 ORL A,R6 ;010E 4E JB 28H.7,Q0132 ;010F 20 47 20 AJMP Q0121 ;0112 21 21 JB 20H.0,Q0138 ;0114 20 00 21 AJMP Q0120 ;0117 21 20 AJMP Q0220 ;0119 41 20 ORL A,R5 ;011B 4D JB 28H.1,Q013F ;011C 20 41 20 ANL A,R2 ;011F 5A Q0120: JB 29H.1,Q0143 ;0120 20 49 20 ORL A,R6 ;0123 4E Q0124: JB 28H.7,Q0147 ;0124 20 47 20 AJMP Q0121 ;0127 21 21 JB 20H.0,Q014C ;0129 20 00 20 AJMP Q0220 ;012C 41 20 Q012E: MOV @R0,#69H ;012E 76 69 ORL C,2EH.4 ;0130 72 74 Q0132: MOV 61H,#6CH ;0132 75 61 6C JB 29H.4,Q0185 ;0135 20 4C 4D Q0138: JNB 26H.3,Q016D ;0138 30 33 32 ORL A,R4 ;013B 4C ADD A,R6 ;013C 2E ADD A,R6 ;013D 2E ADD A,R6 ;013E 2E Q013F: JB 20H.0,Q0162 ;013F 20 00 20 XRL A,#72H ;0142 64 72 XRL A,R1 ;0144 69 MOV @R0,#65H ;0145 76 65 Q0147: XRL A,R6 ;0147 6E JB 2CH.2,Q01C4 ;0148 20 62 79 JB 2CH.1,Q016E ;014B 20 61 20 MOV @R0,#69H ;014E 76 69 ORL C,2EH.4 ;0150 72 74 MOV 61H,#6CH ;0152 75 61 6C JB 20H.0,Q0178 ;0155 20 00 20 JB 24H.0,Q0193 ;0158 20 20 38 JNB 26H.5,Q018F ;015B 30 35 31 JB 2EH.0,Q01D3 ;015E 20 70 72 XRL A,R7 ;0161 6F Q0162: XRL 65H,#73H ;0162 63 65 73 JMP @A+DPTR ;0165 73 XRL A,R7 ;0166 6F ORL C,24H.1 ;0167 72 21 NOP ;0169 00 Q016A: MOV A,#38H ;016A 74 38 ACALL Q01FA ;016C 31 FA Q016E: MOV A,#0EH ;016E 74 0E ACALL Q01FA ;0170 31 FA MOV R7,#02H ;0172 7F 02 Q0174: MOV DPTR,#0100H ;0174 90 01 00 ACALL Q01CB ;0177 31 CB MOV DPTR,#00C8H ;0179 90 00 C8 ACALL Q0213 ;017C 51 13 MOV A,#01H ;017E 74 01 ACALL Q01FA ;0180 31 FA MOV DPTR,#0116H ;0182 90 01 16 Q0185: ACALL Q01CB ;0185 31 CB MOV DPTR,#00C8H ;0187 90 00 C8 ACALL Q0213 ;018A 51 13 MOV A,#01H ;018C 74 01 ACALL Q01FA ;018E 31 FA DJNZ R7,Q0174 ;0190 DF E2 MOV DPTR,#0100H ;0192 90 01 00 ACALL Q01CB ;0195 31 CB MOV DPTR,#0190H ;0197 90 01 90 ACALL Q0213 ;019A 51 13 MOV A,#0C0H ;019C 74 C0 ACALL Q01FA ;019E 31 FA MOV DPTR,#012BH ;01A0 90 01 2B ACALL Q01E0 ;01A3 31 E0 MOV DPTR,#00C8H ;01A5 90 00 C8 ACALL Q0213 ;01A8 51 13 MOV A,#01H ;01AA 74 01 ACALL Q01FA ;01AC 31 FA MOV DPTR,#0141H ;01AE 90 01 41 ACALL Q01E0 ;01B1 31 E0 MOV A,#0C0H ;01B3 74 C0 ACALL Q01FA ;01B5 31 FA MOV DPTR,#0157H ;01B7 90 01 57 ACALL Q01E0 ;01BA 31 E0 MOV A,#0FH ;01BC 74 0F ACALL Q01FA ;01BE 31 FA MOV DPTR,#07D0H ;01C0 90 07 D0 ACALL Q0213 ;01C3 51 13 MOV A,#01H ;01C5 74 01 ACALL Q01FA ;01C7 31 FA SJMP Q016E ;01C9 80 A3 Q01CB: MOV R0,#01H ;01CB 78 01 Q01CD: CLR A ;01CD E4 MOVC A,@A+DPTR ;01CE 93 JZ Q01DF ;01CF 60 0E MOVX @R0,A ;01D1 F2 ACALL Q0202 ;01D2 51 02 INC DPTR ;01D4 A3 PUSH DPL ;01D5 C0 82 PUSH DPH ;01D7 C0 83 POP DPH ;01D9 D0 83 POP DPL ;01DB D0 82 SJMP Q01CD ;01DD 80 EE Q01DF: RET ;01DF 22 Q01E0: MOV R0,#01H ;01E0 78 01 Q01E2: CLR A ;01E2 E4 MOVC A,@A+DPTR ;01E3 93 JZ Q01F9 ;01E4 60 13 MOVX @R0,A ;01E6 F2 ACALL Q0202 ;01E7 51 02 INC DPTR ;01E9 A3 PUSH DPL ;01EA C0 82 PUSH DPH ;01EC C0 83 MOV DPTR,#0064H ;01EE 90 00 64 ACALL Q0213 ;01F1 51 13 POP DPH ;01F3 D0 83 POP DPL ;01F5 D0 82 SJMP Q01E2 ;01F7 80 E9 Q01F9: RET ;01F9 22 Q01FA: MOV R0,#00H ;01FA 78 00 MOVX @R0,A ;01FC F2 SJMP Q0202 ;01FD 80 03 MOV R0,#01H ;01FF 78 01 MOVX @R0,A ;0201 F2 Q0202: MOV R1,#02H ;0202 79 02 MOVX A,@R1 ;0204 E3 JB ACC.7,Q0202 ;0205 20 E7 FA RET ;0208 22 Q0209: PUSH ACC ;0209 C0 E0 ACALL Q0213 ;020B 51 13 POP ACC ;020D D0 E0 DEC A ;020F 14 JNZ Q0209 ;0210 70 F7 RET ;0212 22 Q0213: XRL DPL,#0FFH ;0213 63 82 FF XRL DPH,#0FFH ;0216 63 83 FF INC DPTR ;0219 A3 Q021A: MOV TL0,#9CH ;021A 75 8A 9C MOV TH0,#0FFH ;021D 75 8C FF Q0220: MOV TMOD,#01H ;0220 75 89 01 SETB TR0 ;0223 D2 8C JNB TF0,$ ;0225 30 8D FD CLR TR0 ;0228 C2 8C CLR TF0 ;022A C2 8D INC DPTR ;022C A3 MOV A,DPL ;022D E5 82 ORL A,DPH ;022F 45 83 JNZ Q021A ;0231 70 E7 RET ;0233 22 |
|
在KEIL环境下运行仿真,自动生成汇编代码,全部复制就可以了 但你不一定能看得懂 |
| C语言在编译过程中确实会产生汇编.s文件,但那个很乱,机器读的,一看就不是汇编写的,我做过一个类似的程序,但这个工作量对我太大了,建议楼主还是去找汇编的程序,不过现在用汇编写的人很少了,就我读书的时候学过, |
标记一下看看有木有后现代雷锋 ![]() |
| 汇编程序KELL会自动生成的,无需要人为改写。只是你不知道它在那里而矣。你找找吧。 |
|
; .\123\main.SRC generated from: 123\main.c ; COMPILER INVOKED BY: ; C:\Keil\C51\BIN\C51.EXE 123\main.c BROWSE DEBUG OBJECTEXTEND PRINT(.\main.lst) SRC(.\123\main.SRC) $NOMOD51 NAME MAIN P0 DATA 080H P1 DATA 090H P2 DATA 0A0H P3 DATA 0B0H T0 BIT 0B0H.4 AC BIT 0D0H.6 T1 BIT 0B0H.5 EA BIT 0A8H.7 IE DATA 0A8H RD BIT 0B0H.7 ES BIT 0A8H.4 IP DATA 0B8H RI BIT 098H.0 INT0 BIT 0B0H.2 CY BIT 0D0H.7 TI BIT 098H.1 INT1 BIT 0B0H.3 PS BIT 0B8H.4 SP DATA 081H OV BIT 0D0H.2 WR BIT 0B0H.6 SBUF DATA 099H PCON DATA 087H SCON DATA 098H TMOD DATA 089H TCON DATA 088H IE0 BIT 088H.1 IE1 BIT 088H.3 B DATA 0F0H ACC DATA 0E0H ET0 BIT 0A8H.1 ET1 BIT 0A8H.3 TF0 BIT 088H.5 TF1 BIT 088H.7 RB8 BIT 098H.2 TH0 DATA 08CH EX0 BIT 0A8H.0 IT0 BIT 088H.0 TH1 DATA 08DH TB8 BIT 098H.3 EX1 BIT 0A8H.2 IT1 BIT 088H.2 P BIT 0D0H.0 SM0 BIT 098H.7 TL0 DATA 08AH p10 BIT 090H.0 SM1 BIT 098H.6 TL1 DATA 08BH p11 BIT 090H.1 SM2 BIT 098H.5 p12 BIT 090H.2 p13 BIT 090H.3 PT0 BIT 0B8H.1 ep BIT 0A0H.2 PT1 BIT 0B8H.3 RS0 BIT 0D0H.3 p24 BIT 0A0H.4 TR0 BIT 088H.4 RS1 BIT 0D0H.4 TR1 BIT 088H.6 PX0 BIT 0B8H.0 PX1 BIT 0B8H.2 DPH DATA 083H DPL DATA 082H rs BIT 0A0H.0 REN BIT 098H.4 rw BIT 0A0H.1 RXD BIT 0B0H.0 TXD BIT 0B0H.1 F0 BIT 0D0H.5 PSW DATA 0D0H ?PR?_delay?MAIN SEGMENT CODE ?PR?lcd_bz?MAIN SEGMENT CODE ?BI?lcd_bz?MAIN SEGMENT BIT OVERLAYABLE ?PR?_lcd_wcmd?MAIN SEGMENT CODE ?PR?_lcd_pos?MAIN SEGMENT CODE ?PR?_lcd_wdat?MAIN SEGMENT CODE ?PR?lcd_init?MAIN SEGMENT CODE ?PR?main?MAIN SEGMENT CODE ?DT?main?MAIN SEGMENT DATA OVERLAYABLE ?C_INITSEG SEGMENT CODE ?CO?MAIN SEGMENT CODE ?DT?MAIN SEGMENT DATA EXTRN CODE (?C_STARTUP) PUBLIC bzw PUBLIC dis3 PUBLIC dis2 PUBLIC dis1 PUBLIC main PUBLIC lcd_init PUBLIC _lcd_wdat PUBLIC _lcd_pos PUBLIC _lcd_wcmd PUBLIC lcd_bz PUBLIC _delay RSEG ?DT?main?MAIN ?main?BYTE: j?650: DS 1 RSEG ?BI?lcd_bz?MAIN ?lcd_bz?BIT: result?142: DBIT 1 RSEG ?DT?MAIN bzw: DS 26 RSEG ?CO?MAIN dis1: DB '1' ,000H DB 000H,000H,000H,000H,000H,000H,000H DB 'a' ,'i' ,'r' ,000H DB 000H,000H,000H,000H,000H DB 'r' ,'i' ,'c' ,'e' ,000H DB 000H,000H,000H,000H DB 't' ,'r' ,'e' ,'e' ,000H DB 000H,000H,000H,000H DB 's' ,'e' ,'a' ,000H DB 000H,000H,000H,000H,000H DB 'h' ,'a' ,'i' ,'r' ,000H DB 000H,000H,000H,000H DB 'm' ,'e' ,'a' ,'t' ,000H DB 000H,000H,000H,000H DB 'h' ,'e' ,000H DB 000H,000H,000H,000H,000H,000H DB 's' ,'h' ,'e' ,000H DB 000H,000H,000H,000H,000H DB 'g' ,'o' ,'o' ,'d' ,000H DB 000H,000H,000H,000H DB 'n' ,'i' ,'c' ,'e' ,000H DB 000H,000H,000H,000H DB 000H,000H,000H,000H,000H,000H,000H,000H,000H dis2: DB 'r' ,'a' ,'t' ,'e' ,000H dis3: DB '0' ,'%' ,000H DB 000H,000H,000H,000H,000H,000H DB '1' ,'0' ,'%' ,000H DB 000H,000H,000H,000H,000H DB '2' ,'0' ,'%' ,000H DB 000H,000H,000H,000H,000H DB '3' ,'0' ,'%' ,000H DB 000H,000H,000H,000H,000H DB '4' ,'0' ,'%' ,000H DB 000H,000H,000H,000H,000H DB '5' ,'0' ,'%' ,000H DB 000H,000H,000H,000H,000H DB '6' ,'0' ,'%' ,000H DB 000H,000H,000H,000H,000H DB '7' ,'0' ,'%' ,000H DB 000H,000H,000H,000H,000H DB '8' ,'0' ,'%' ,000H DB 000H,000H,000H,000H,000H DB '9' ,'0' ,'%' ,000H DB 000H,000H,000H,000H,000H DB '1' ,'0' ,'0' ,'%' ,000H DB 000H,000H,000H,000H RSEG ?C_INITSEG DB 01AH DB bzw DW 00002H DW 00002H DW 00002H DW 00002H DW 00002H DW 00002H DW 00002H DW 00002H DW 00002H DW 00002H DW 00002H DW 00002H DW 00002H ; ; //#include <reg51.h> ; ; ; ; #ifndef __REG51_H__ ; #define __REG51_H__ ; ; /* BYTE Register */ ; sfr P0 = 0x80; ; sfr P1 = 0x90; ; sfr P2 = 0xA0; ; sfr P3 = 0xB0; ; sfr PSW = 0xD0; ; sfr ACC = 0xE0; ; sfr B = 0xF0; ; sfr SP = 0x81; ; sfr DPL = 0x82; ; sfr DPH = 0x83; ; sfr PCON = 0x87; ; sfr TCON = 0x88; ; sfr TMOD = 0x89; ; sfr TL0 = 0x8A; ; sfr TL1 = 0x8B; ; sfr TH0 = 0x8C; ; sfr TH1 = 0x8D; ; sfr IE = 0xA8; ; sfr IP = 0xB8; ; sfr SCON = 0x98; ; sfr SBUF = 0x99; ; ; ; /* BIT Register */ ; /* PSW */ ; sbit CY = 0xD7; ; sbit AC = 0xD6; ; sbit F0 = 0xD5; ; sbit RS1 = 0xD4; ; sbit RS0 = 0xD3; ; sbit OV = 0xD2; ; sbit P = 0xD0; ; ; /* TCON */ ; sbit TF1 = 0x8F; ; sbit TR1 = 0x8E; ; sbit TF0 = 0x8D; ; sbit TR0 = 0x8C; ; sbit IE1 = 0x8B; ; sbit IT1 = 0x8A; ; sbit IE0 = 0x89; ; sbit IT0 = 0x88; ; ; /* IE */ ; sbit EA = 0xAF; ; sbit ES = 0xAC; ; sbit ET1 = 0xAB; ; sbit EX1 = 0xAA; ; sbit ET0 = 0xA9; ; sbit EX0 = 0xA8; ; ; /* IP */ ; sbit PS = 0xBC; ; sbit PT1 = 0xBB; ; sbit PX1 = 0xBA; ; sbit PT0 = 0xB9; ; sbit PX0 = 0xB8; ; ; /* P3 */ ; sbit RD = 0xB7; ; sbit WR = 0xB6; ; sbit T1 = 0xB5; ; sbit T0 = 0xB4; ; sbit INT1 = 0xB3; ; sbit INT0 = 0xB2; ; sbit TXD = 0xB1; ; sbit RXD = 0xB0; ; ; /* SCON */ ; sbit SM0 = 0x9F; ; sbit SM1 = 0x9E; ; sbit SM2 = 0x9D; ; sbit REN = 0x9C; ; sbit TB8 = 0x9B; ; sbit RB8 = 0x9A; ; sbit TI = 0x99; ; sbit RI = 0x98; ; ; #endif ; ; ; ; ; #include <intrins.h> ; ; sbit rs= P2^0; ; sbit rw = P2^1; ; sbit ep = P2^2; ; sbit p10=0x90; ; sbit p11=0x91; ; sbit p12=0x92; ; sbit p13=0x93; ; sbit p24=0xA4; ; ; unsigned char code dis1[12][9] = {"1","air","rice","tree","sea","hair","meat","he","she","good","nice"}; ; unsigned char code dis2[] = {"rate"}; ; unsigned char code dis3[11][9]={"0%","10%","20%","30%","40%","50%","60%","70%","80%","90%","100%"}; ; unsigned int bzw[13]={2,2,2,2,2,2,2,2,2,2,2,2,2}; ; void delay(unsigned char ms) RSEG ?PR?_delay?MAIN _delay: USING 0 ; SOURCE LINE # 108 ;---- Variable 'i?041' assigned to Register 'R6' ---- ;---- Variable 'ms?040' assigned to Register 'R7' ---- ; { ; SOURCE LINE # 109 ?C0001: ; unsigned char i; ; while(ms--) ; SOURCE LINE # 111 MOV R5,AR7 DEC R7 MOV A,R5 JZ ?C0006 ; { ; SOURCE LINE # 112 ; for(i = 0; i< 250; i++) ; SOURCE LINE # 113 CLR A MOV R6,A ?C0003: MOV A,R6 CLR C SUBB A,#0FAH MOV A,#080H SUBB A,#080H JNC ?C0001 ; { ; SOURCE LINE # 114 ; _nop_(); ; SOURCE LINE # 115 NOP ; _nop_(); ; SOURCE LINE # 116 NOP ; _nop_(); ; SOURCE LINE # 117 NOP ; _nop_(); ; SOURCE LINE # 118 NOP ; } ; SOURCE LINE # 119 INC R6 SJMP ?C0003 ; } ; SOURCE LINE # 120 ; } ; SOURCE LINE # 121 ?C0006: RET ; END OF _delay ; ; bit lcd_bz() RSEG ?PR?lcd_bz?MAIN lcd_bz: ; SOURCE LINE # 123 ; { ; SOURCE LINE # 124 ; bit result; ; rs = 0; ; SOURCE LINE # 126 CLR rs ; rw = 1; ; SOURCE LINE # 127 SETB rw ; ep = 1; ; SOURCE LINE # 128 SETB ep ; _nop_(); ; SOURCE LINE # 129 NOP ; _nop_(); ; SOURCE LINE # 130 NOP ; _nop_(); ; SOURCE LINE # 131 NOP ; _nop_(); ; SOURCE LINE # 132 NOP ; result =(bit)(P0 & 0x80); ; SOURCE LINE # 133 MOV A,P0 RLC A MOV result?142,C ; ep = 0; ; SOURCE LINE # 134 CLR ep ; return result; ; SOURCE LINE # 135 MOV C,result?142 ; } ; SOURCE LINE # 136 RET ; END OF lcd_bz ; ; void lcd_wcmd(unsigned char cmd) //写指令 RSEG ?PR?_lcd_wcmd?MAIN _lcd_wcmd: ; SOURCE LINE # 138 ;---- Variable 'cmd?243' assigned to Register 'R7' ---- ; { ; SOURCE LINE # 139 ?C0008: ; while(lcd_bz());//判断LCD是否忙碌 ; SOURCE LINE # 140 LCALL lcd_bz JC ?C0008 ; rs = 0; ; SOURCE LINE # 141 CLR rs ; rw = 0; //re=0,rw=1 ;e为正脉冲 ; SOURCE LINE # 142 CLR rw ; ep = 0; ; SOURCE LINE # 143 CLR ep ; _nop_(); ; SOURCE LINE # 144 NOP ; _nop_(); ; SOURCE LINE # 145 NOP ; P0 = cmd; ; SOURCE LINE # 146 MOV P0,R7 ; _nop_(); ; SOURCE LINE # 147 NOP ; _nop_(); ; SOURCE LINE # 148 NOP ; _nop_(); ; SOURCE LINE # 149 NOP ; _nop_(); ; SOURCE LINE # 150 NOP ; ep = 1; ; SOURCE LINE # 151 SETB ep ; _nop_(); ; SOURCE LINE # 152 NOP ; _nop_(); ; SOURCE LINE # 153 NOP ; _nop_(); ; SOURCE LINE # 154 NOP ; _nop_(); ; SOURCE LINE # 155 NOP ; ep = 0; ; SOURCE LINE # 156 CLR ep ; } ; SOURCE LINE # 157 RET ; END OF _lcd_wcmd ; ; void lcd_pos(unsigned char pos) //显示位置转换程序 RSEG ?PR?_lcd_pos?MAIN _lcd_pos: USING 0 ; SOURCE LINE # 159 ;---- Variable 'pos?344' assigned to Register 'R7' ---- ; { ; SOURCE LINE # 160 ; lcd_wcmd(pos | 0x80); //显示第一行的地址是0x08,第二行的是0xc0。 ; SOURCE LINE # 161 MOV A,R7 ORL A,#080H MOV R7,A LJMP _lcd_wcmd ; END OF _lcd_pos ; } ; ; void lcd_wdat(unsigned char dat) //写数据 RSEG ?PR?_lcd_wdat?MAIN _lcd_wdat: ; SOURCE LINE # 164 ;---- Variable 'dat?445' assigned to Register 'R7' ---- ; { ; SOURCE LINE # 165 ?C0012: ; while(lcd_bz());//判断LCD是否忙碌 ; SOURCE LINE # 166 LCALL lcd_bz JC ?C0012 ; rs = 1; ; SOURCE LINE # 167 SETB rs ; rw = 0; ; SOURCE LINE # 168 CLR rw ; ep = 0; ; SOURCE LINE # 169 CLR ep ; P0 = dat; ; SOURCE LINE # 170 MOV P0,R7 ; _nop_(); ; SOURCE LINE # 171 NOP ; _nop_(); ; SOURCE LINE # 172 NOP ; _nop_(); ; SOURCE LINE # 173 NOP ; _nop_(); ; SOURCE LINE # 174 NOP ; ep = 1; ; SOURCE LINE # 175 SETB ep ; _nop_(); ; SOURCE LINE # 176 NOP ; _nop_(); ; SOURCE LINE # 177 NOP ; _nop_(); ; SOURCE LINE # 178 NOP ; _nop_(); ; SOURCE LINE # 179 NOP ; ep = 0; ; SOURCE LINE # 180 CLR ep ; } ; SOURCE LINE # 181 RET ; END OF _lcd_wdat ; ; void lcd_init() //初始化lcd RSEG ?PR?lcd_init?MAIN lcd_init: USING 0 ; SOURCE LINE # 183 ; { ; SOURCE LINE # 184 ; lcd_wcmd(0x38); ; SOURCE LINE # 185 MOV R7,#038H LCALL _lcd_wcmd ; delay(1); ; SOURCE LINE # 186 MOV R7,#01H LCALL _delay ; lcd_wcmd(0x0c); ; SOURCE LINE # 187 MOV R7,#0CH LCALL _lcd_wcmd ; delay(1); ; SOURCE LINE # 188 MOV R7,#01H LCALL _delay ; lcd_wcmd(0x06); ; SOURCE LINE # 189 MOV R7,#06H LCALL _lcd_wcmd ; delay(1); ; SOURCE LINE # 190 MOV R7,#01H LCALL _delay ; lcd_wcmd(0x01); //清屏 ; SOURCE LINE # 191 MOV R7,#01H LCALL _lcd_wcmd ; delay(1); ; SOURCE LINE # 192 LJMP _delay ; END OF lcd_init ; } ; ; void main(void) RSEG ?PR?main?MAIN main: USING 0 ; SOURCE LINE # 195 ;---- Variable 'k?647' assigned to Register 'R4' ---- ;---- Variable 'count?648' assigned to Register 'R1' ---- ; { ; SOURCE LINE # 196 ; unsigned char i; ; unsigned char k; ; unsigned char count; ; unsigned char a; ; unsigned char j; ; lcd_init();// 初始化LCD ; SOURCE LINE # 202 LCALL lcd_init ; delay(10);j=0; ; SOURCE LINE # 203 MOV R7,#0AH LCALL _delay CLR A MOV j?650,A ; i=1; ; SOURCE LINE # 204 ;---- Variable 'i?646' assigned to Register 'R3' ---- MOV R3,#01H ?C0016: ; while(1){ ; SOURCE LINE # 205 ; delay(60); ; SOURCE LINE # 206 MOV R7,#03CH LCALL _delay ; lcd_wcmd(0x01);//清屏指令,防止单词由长到短时出现乱码. ; SOURCE LINE # 207 MOV R7,#01H LCALL _lcd_wcmd ; delay(1); ; SOURCE LINE # 208 LCALL _delay ; P1=0x00; j=0; ; SOURCE LINE # 209 CLR A MOV P1,A MOV j?650,A ; lcd_pos(0x01);//设置显示位置 ; SOURCE LINE # 210 MOV R7,#01H LCALL _lcd_pos ; ; if(P1!=0) ; SOURCE LINE # 212 MOV R7,P1 MOV A,R7 JZ ?C0018 ; { ; SOURCE LINE # 213 ; switch(P1) //P1 扫行 ; SOURCE LINE # 214 MOV R7,P1 MOV A,R7 ADD A,#0FEH JZ ?C0023 ADD A,#0FEH JZ ?C0024 ADD A,#0FCH JZ ?C0025 ADD A,#07H JNZ ?C0018 ; { ; SOURCE LINE # 215 ; case (0x01): ; SOURCE LINE # 216 ?C0020: ; if(bzw[ i]==2) ; SOURCE LINE # 217 MOV A,R3 ADD A,ACC ADD A,#LOW (bzw) MOV R0,A MOV A,@R0 MOV R6,A INC R0 MOV A,@R0 XRL A,#02H ORL A,R6 JNZ ?C0021 ; { count++; ; SOURCE LINE # 218 INC R1 ; bzw[ i]=bzw[ i]-1; //标志位,每个单词只能使count加1. ; SOURCE LINE # 219 MOV A,R3 ADD A,ACC ADD A,#LOW (bzw) MOV R0,A INC R0 MOV A,@R0 DEC @R0 DEC R0 JNZ ?C0037 DEC @R0 ?C0037: ; if(bzw[ i]<2) ; SOURCE LINE # 220 MOV A,R3 ADD A,ACC ADD A,#LOW (bzw) MOV R0,A MOV A,@R0 MOV R6,A INC R0 MOV A,@R0 CLR C SUBB A,#02H MOV A,R6 SUBB A,#00H JNC ?C0021 ; bzw[ i]=1; ; SOURCE LINE # 221 MOV A,R3 ADD A,ACC ADD A,#LOW (bzw) MOV R0,A MOV @R0,#00H INC R0 MOV @R0,#01H ; } i++ ; ; SOURCE LINE # 222 ?C0021: INC R3 ; break;//sure ; SOURCE LINE # 223 SJMP ?C0018 ; case (0x02):i++;j++; ; SOURCE LINE # 224 ?C0023: INC R3 INC j?650 ; bzw[ i]=2;break; //unknown ; SOURCE LINE # 225 MOV A,R3 ADD A,ACC ADD A,#LOW (bzw) MOV R0,A MOV @R0,#00H INC R0 MOV @R0,#02H SJMP ?C0018 ; case (0x04):i--;break; //up ; SOURCE LINE # 226 ?C0024: DEC R3 SJMP ?C0018 ; case (0x08):i++;break; //down ; SOURCE LINE # 227 ?C0025: INC R3 ; ; ; } } ; SOURCE LINE # 230 ?C0018: ; p24=0; ; SOURCE LINE # 231 CLR p24 ; if(j==1) ; SOURCE LINE # 232 MOV A,j?650 XRL A,#01H JNZ ?C0026 ; p24=1; ; SOURCE LINE # 233 SETB p24 ?C0026: ; if(i==11) i=1; ; SOURCE LINE # 234 MOV A,R3 XRL A,#0BH JNZ ?C0027 MOV R3,#01H ?C0027: ; if(i==0) i=10; ; SOURCE LINE # 235 MOV A,R3 JNZ ?C0029 MOV R3,#0AH ?C0029: ; while(dis1[ i][k]!= '\0') ; SOURCE LINE # 236 MOV A,R3 MOV B,#09H MUL AB ADD A,#LOW (dis1) MOV DPL,A CLR A ADDC A,#HIGH (dis1) MOV DPH,A MOV A,DPL ADD A,R4 MOV DPL,A CLR A ADDC A,DPH MOV DPH,A CLR A MOVC A,@A+DPTR MOV R7,A JZ ?C0030 ; { ; SOURCE LINE # 237 ; lcd_wdat(dis1[ i][k]);//单词 ; SOURCE LINE # 238 LCALL _lcd_wdat ; k++; ; SOURCE LINE # 239 INC R4 ; }k=0; ; SOURCE LINE # 240 SJMP ?C0029 ?C0030: CLR A MOV R4,A ; lcd_pos(0x42);// 设置显示位置 ; SOURCE LINE # 241 MOV R7,#042H LCALL _lcd_pos ; a = 0; ; SOURCE LINE # 242 ;---- Variable 'a?649' assigned to Register 'R6' ---- CLR A MOV R6,A ?C0031: ; while(dis2[a] != '\0') ; SOURCE LINE # 243 MOV A,R6 MOV DPTR,#dis2 MOVC A,@A+DPTR MOV R7,A JZ ?C0032 ; { ; SOURCE LINE # 244 ; lcd_wdat(dis2[a]);// rate ; SOURCE LINE # 245 LCALL _lcd_wdat ; a++; ; SOURCE LINE # 246 INC R6 ; } ; SOURCE LINE # 247 SJMP ?C0031 ?C0032: ; if(count>10) count=10; ; SOURCE LINE # 248 MOV A,R1 SETB C SUBB A,#0AH MOV A,#080H SUBB A,#080H JC ?C0033 MOV R1,#0AH ?C0033: ; lcd_pos(0x48); ; SOURCE LINE # 249 MOV R7,#048H LCALL _lcd_pos ?C0034: ; while(dis3[count][k]!= '\0') ; SOURCE LINE # 250 MOV A,R1 MOV B,#09H MUL AB ADD A,#LOW (dis3) MOV DPL,A CLR A ADDC A,#HIGH (dis3) MOV DPH,A MOV A,DPL ADD A,R4 MOV DPL,A CLR A ADDC A,DPH MOV DPH,A CLR A MOVC A,@A+DPTR MOV R7,A JZ ?C0035 ; { ; SOURCE LINE # 251 ; lcd_wdat(dis3[count][k]);//正确率 ; SOURCE LINE # 252 LCALL _lcd_wdat ; k++; ; SOURCE LINE # 253 INC R4 ; }k=0; ; SOURCE LINE # 254 SJMP ?C0034 ?C0035: CLR A MOV R4,A ; } ; SOURCE LINE # 255 LJMP ?C0016 ; END OF main END |