//实验目的:按下按键就在数码管上显示相应数字,并且传送到串口调试助手上 org 00H ljmp start org 30H start: mov P0,#0xff//设置初始值 mov dptr,#numb lcall en lcall UART_init here: lcall keyin sjmp here //好比是一个while(1)循环 ;首先3/8译码器使能 并且选中第一个数码管用于显示 en: clr P1.4 setb P1.3 clr P1.0 clr P1.1 clr P1.2 ret //uart初始化 UART_init: mov TMOD,#0x20 //0010 0000 说明在定时器1的工作方式2下工作 mov TH1,#0xFD mov TL1,#0xFD setb TR1 //定时器1运行控制位=1,说明开始计时 mov SCON,#0x50 //0101 0000 前两位说明在串口工作方式1 第三位SM2在方式1设置为0 第四位REN=1允许串口接收 ret //延时函数 延时为6ms左右,这个延时主要用于按键去抖动 delay: mov R0,#100 j1: mov R1,#30 djnz R0,j2 ljmp quit j2: djnz R1,j2 ljmp j1 quit: ret //按键函数 keyin: j10: clr P2.3//keyout1 setb P2.2//keyout2 setb P2.1//keyout3 setb P2.0//keyout4 j11: jb P2.4,j12 lcall delay jb P2.4,j12 mov A,#0 movc A,@A+dptr mov P0,A mov SBUF,#0 j12: jb P2.5,j13 lcall delay jb P2.5,j13 mov A,#1 movc A,@A+dptr mov P0,A mov SBUF,#1 j13: jb P2.6,j14 lcall delay jb P2.6,j14 mov A,#2 movc A,@A+dptr mov P0,A mov SBUF,#2 j14: jb P2.7,j15 lcall delay jb P2.7,j15 mov A,#3 movc A,@A+dptr mov P0,A mov SBUF,#3 j15: jnb P2.4,j15 jnb P2.5,j15 jnb P2.6,j15 jnb P2.7,j15 //--------------------------------------- j20: setb P2.3//keyout1 clr P2.2//keyout2 setb P2.1//keyout3 setb P2.0//keyout4 j21: jb P2.4,j22 lcall delay jb P2.4,j22 mov A,#4 movc A,@A+dptr mov P0,A mov SBUF,#4 j22: jb P2.5,j23 lcall delay jb P2.5,j23 mov A,#5 movc A,@A+dptr mov P0,A mov SBUF,#5 j23: jb P2.6,j24 lcall delay jb P2.6,j24 mov A,#6 movc A,@A+dptr mov P0,A mov SBUF,#6 j24: jb P2.7,j25 lcall delay jb P2.7,j25 mov A,#7 movc A,@A+dptr mov P0,A mov SBUF,#7 j25: jnb P2.4,j25 jnb P2.5,j25 jnb P2.6,j25 jnb P2.7,j25 //--------------------------------------- j30: setb P2.3//keyout1 setb P2.2//keyout2 clr P2.1//keyout3 setb P2.0//keyout4 j31: jb P2.4,j32 lcall delay jb P2.4,j32 mov A,#8 movc A,@A+dptr mov P0,A mov SBUF,#8 j32: jb P2.5,j33 lcall delay jb P2.5,j33 mov A,#9 movc A,@A+dptr mov P0,A mov SBUF,#9 j33: jb P2.6,j34 lcall delay jb P2.6,j34 mov A,#10 movc A,@A+dptr mov P0,A mov SBUF,#10 j34: jb P2.7,j35 lcall delay jb P2.7,j35 mov A,#11 movc A,@A+dptr mov P0,A mov SBUF,#11 j35: jnb P2.4,j35 jnb P2.5,j35 jnb P2.6,j35 jnb P2.7,j35 //--------------------------------------- j40: setb P2.3//keyout1 setb P2.2//keyout2 setb P2.1//keyout3 clr P2.0//keyout4 j41: jb P2.4,j42 lcall delay jb P2.4,j42 mov A,#12 movc A,@A+dptr mov P0,A mov SBUF,#12 j42: jb P2.5,j43 lcall delay jb P2.5,j43 mov A,#13 movc A,@A+dptr mov P0,A mov SBUF,#13 j43: jb P2.6,j44 lcall delay jb P2.6,j44 mov A,#14 movc A,@A+dptr mov P0,A mov SBUF,#14 j44: jb P2.7,j45 lcall delay jb P2.7,j45 mov A,#15 movc A,@A+dptr mov P0,A mov SBUF,#15 j45: jnb P2.4,j45 jnb P2.5,j45 jnb P2.6,j45 jnb P2.7,j45 ret //0-F numb: DB 0x0c0,0x0F9,0x0A4,0x0B0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E end