?? av-p06a.lst
字號:
0498 782F 792 MOV R0,#2fH ;高位開始
793
049A EA 794 D7GID: MOV A,R2
049B 93 795 MOVC A,@A+DPTR
049C F6 796 MOV @R0,A
049D 18 797 DEC R0
049E 0A 798 INC R2
049F D9F9 799 DJNZ R1,D7GID
04A1 22 800 RET
801
802
803 ;/////////////////////////////////////////////////////////////////////////////////////////
804 ;A/D轉換,T1中斷入口
04A2 0576 805 AD_GO: INC TIME1
04A4 C0E0 806 PUSH ACC
04A6 C0D0 807 PUSH PSW
04A8 AB62 808 AD: MOV R3,AD_SIGN
04AA BB0017 809 CJNE R3,#0,AD_1
810
04AD D283 811 SETB AD_OUT
04AF 0563 812 INC AD_CLR
04B1 AB63 813 MOV R3,AD_CLR
04B3 756500 814 MOV AD_TEM,#0
04B6 BB3227 815 CJNE R3,#50,AD_RET
04B9 756300 816 MOV AD_CLR,#0
04BC 756400 817 MOV AD_CYC,#0
04BF 756201 818 MOV AD_SIGN,#1
04C2 801C 819 JMP AD_RET
820
04C4 AB62 821 AD_1: MOV R3,AD_SIGN
04C6 BB0117 822 CJNE R3,#1,AD_RET
04C9 C283 823 CLR AD_OUT
04CB 0564 824 INC AD_CYC
04CD 308402 825 JNB AD_IN,AD_1_1
04D0 0565 826 INC AD_TEM
04D2 AB64 827 AD_1_1: MOV R3,AD_CYC
04D4 BB0B09 828 CJNE R3,#11,AD_RET
04D7 756400 829 MOV AD_CYC,#0
04DA 85656E 830 MOV AD_DATA1,AD_TEM
04DD 756200 831 MOV AD_SIGN,#0
04E0 D0D0 832 AD_RET: POP PSW
04E2 D0E0 833 POP ACC
04E4 32 834 RETI
04E5 00 835 NOP
04E6 00 836 NOP
837
838
839 ;/////////////////////////////////////////////////////////////////////////////////////////
04E7 840 WR_VFD :
04E7 C2A2 841 CLR PT6311_STB ;寫入一組8位數據
04E9 7470 842 MOV A,#70H ;設置為正常工作,地址增量,寫顯示數據模式
04EB B118 843 CALL OUTDATA
04ED D2A2 844 SETB PT6311_STB
04EF 00 845 NOP
A51 MACRO ASSEMBLER AV_P06A 04/05/2007 17:46:19 PAGE 14
04F0 00 846 NOP
04F1 C2A2 847 CLR PT6311_STB
04F3 E544 848 MOV A,DISP_INDEX ;設置寫入地址指針
04F5 900D0A 849 MOV DPTR,#TAB_6311RAM
04F8 93 850 MOVC A,@A+DPTR
04F9 24C0 851 ADD A,#0C0H ;修正
04FB C3 852 CLR C
04FC B118 853 CALL OUTDATA
854
04FE A943 855 MOV R1,DISP_BUFFER ;把顯示緩沖區數據寫入PT16311
0500 E7 856 WR_VFD1: MOV A,@R1
0501 B118 857 CALL OUTDATA
858
0503 0543 859 INC DISP_BUFFER
0505 0544 860 INC DISP_INDEX
0507 E544 861 MOV A,DISP_INDEX
0509 B41A06 862 CJNE A,#26,WR_QUT ;;掃描完13列后PT6311片內地址指針復0(每列需要2個數據緩沖
區數據)
863
050C 754322 864 MOV DISP_BUFFER,#22H ;顯示緩沖區首址復位
050F 754400 865 MOV DISP_INDEX,#0H ;片內地址指針復位
866
0512 D2A2 867 WR_QUT: SETB PT6311_STB
0514 00 868 NOP
0515 00 869 NOP
0516 0184 870 JMP RUN4_1
871
872 ;-----------------------------------------------------------------------------------------
0518 7808 873 OUTDATA: MOV R0,#8 ;寫入一個字節子程序
051A D2A0 874 SETB PT6311_DATA
051C 00 875 NOP
051D C2A1 876 W1: CLR PT6311_CLK
051F 13 877 RRC A
0520 92A0 878 MOV PT6311_DATA,C
0522 D2A1 879 SETB PT6311_CLK ;時鐘上升沿寫入數據
0524 D8F7 880 DJNZ R0,W1
0526 22 881 RET
882 ;-----------------------------------------------------------------------------------------
0527 7E08 883 INDATA: MOV R6,#8 ;讀入一個字節子程序(讀鍵盤)
0529 D2A0 884 SETB PT6311_DATA ;令PT6311_DATA接口有效
052B D2A1 885 INDATA1: SETB PT6311_CLK ;時鐘的下降沿讀出數據(??)
052D C2A1 886 CLR PT6311_CLK ;讀出一個位
052F A2A0 887 MOV C,PT6311_DATA ;讀出的數據暫存位積存器C
0531 13 888 RRC A ;位數據入ACC
0532 DEF7 889 DJNZ R6,INDATA1
0534 22 890 RET
891 ;-----------------------------------------------------------------------------------------
0535 791A 892 RD_KEY: MOV R1,#KEY_CELL ;讀鍵值子程序
0537 7A06 893 MOV R2,#06H ;要讀入的鍵值單元數為6
0539 C2A2 894 CLR PT6311_STB ;
053B 7476 895 MOV A,#76H ;01110110 命令字:讀鍵盤值
053D B118 896 CALL OUTDATA ;寫入控制字
053F B127 897 RD_1: CALL INDATA ;讀入鍵盤鍵值
0541 F7 898 MOV @R1,A
0542 09 899 INC R1
0543 DAFA 900 DJNZ R2,RD_1
0545 D2A2 901 SETB PT6311_STB
0547 00 902 NOP
0548 C2A2 903 CLR PT6311_STB
904 ;/////////////////////////按鍵鍵值判斷程序(把鍵值整理后放KEY_NUM中)///////////////////////
054A E51A 905 KEY_EX: MOV A,1AH ;判斷那一行閉合
054C 6004 906 JZ KEY_2
054E 7E00 907 MOV R6,#00
0550 8026 908 JMP TAKE
0552 E51B 909 KEY_2 : MOV A,1BH
A51 MACRO ASSEMBLER AV_P06A 04/05/2007 17:46:19 PAGE 15
0554 6004 910 JZ KEY_3
0556 7E08 911 MOV R6,#08
0558 801E 912 JMP TAKE
055A E51C 913 KEY_3 : MOV A,1CH
055C 6004 914 JZ KEY_4
055E 7E10 915 MOV R6,#16
0560 8016 916 JMP TAKE
0562 E51D 917 KEY_4 : MOV A,1DH
0564 6004 918 JZ KEY_5
0566 7E18 919 MOV R6,#024
0568 800E 920 JMP TAKE
056A E51E 921 KEY_5 : MOV A,1EH
056C 6004 922 JZ KEY_6
056E 7E20 923 MOV R6,#32
0570 8006 924 JMP TAKE
0572 E51F 925 KEY_6 : MOV A,1FH
0574 603E 926 JZ RET2 ;無按鍵按下退出
0576 7E28 927 MOV R6,#40
0578 30E004 928 TAKE: JNB ACC.0,N2 ;判斷那一列閉合
057B 7F01 929 MOV R7,#1
057D 802F 930 JMP ADD_KEY
057F 30E104 931 N2: JNB ACC.1,N3
0582 7F02 932 MOV R7,#2
0584 8028 933 JMP ADD_KEY
0586 30E204 934 N3: JNB ACC.2,N4
0589 7F03 935 MOV R7,#3
058B 8021 936 JMP ADD_KEY
058D 30E304 937 N4: JNB ACC.3,N5
0590 7F04 938 MOV R7,#4
0592 801A 939 JMP ADD_KEY
0594 30E404 940 N5: JNB ACC.4,N6
0597 7F05 941 MOV R7,#5
0599 8013 942 JMP ADD_KEY
059B 30E504 943 N6: JNB ACC.5,N7
059E 7F06 944 MOV R7,#06
05A0 800C 945 JMP ADD_KEY
05A2 30E604 946 N7: JNB ACC.6,N8
05A5 7F07 947 MOV R7,#07
05A7 8005 948 JMP ADD_KEY
05A9 30E708 949 N8: JNB ACC.7,RET2
05AC 7F08 950 MOV R7,#08
05AE EE 951 ADD_KEY: MOV A,R6
05AF 2F 952 ADD A,R7
05B0 F554 953 MOV KEY_NUM,A
05B2 8003 954 JMP RET3
05B4 755400 955 RET2: MOV KEY_NUM,#00H ;無按鍵按下鍵值清0
05B7 019C 956 RET3: JMP RUN5_1
957
958 ;//////////////////////////////////進制轉換子程序/////////////////////////////////////////
959
05B9 E558 960 DIV10: MOV A,DIV_16 ;十六進轉十進制子程序
05BB 75F064 961 MOV B,#100
05BE 84 962 DIV AB
05BF E5F0 963 MOV A,B
05C1 75F00A 964 MOV B,#10
05C4 84 965 DIV AB
05C5 F578 966 MOV DISP_H,A ;把十位數值存入高位顯示緩沖區
05C7 85F079 967 MOV DISP_L,B ;把個位數值存入低位顯示緩沖區
05CA 22 968 RET
969 ;------------------------------------按鍵處理子程序---------------------------------------
970
05CB E554 971 KEY_GO: MOV A,KEY_NUM
05CD 6028 972 JZ DELAY_4 ;沒按鍵按下退出
05CF 0557 973 INC KEY_DELAY
05D1 E557 974 MOV A,KEY_DELAY
05D3 B48224 975 CJNE A,#130,OUT
A51 MACRO ASSEMBLER AV_P06A 04/05/2007 17:46:19 PAGE 16
05D6 E554 976 MOV A,KEY_NUM
05D8 B40902 977 CJNE A,#9,DELAY_0 ;復合鍵跳過單鍵處理(KEY_NUM=9,1,5是功能復合鍵)
05DB 8008 978 JMP DELAY_2
05DD B40102 979 DELAY_0: CJNE A,#1,DELAY_1
05E0 8003 980 JMP DELAY_2
05E2 B40507 981 DELAY_1: CJNE A,#5,DELAY_3
982
05E5 E555 983 DELAY_2: MOV A,KEYNUM_SAVE ;================連發/單發的原理===============
05E7 B55402 984 CJNE A,KEY_NUM,DELAY_3 ;如果檢測到連續兩次都不是同一鍵按下的,執行該按鍵的
功能的處理
05EA 800E 985 JMP OUT ;如果檢測到連續兩次都是同一鍵按下的,不執行該按鍵的
功能處理
05EC B1FF 986 DELAY_3: CALL BIJIAO ;調用按鍵處理程序(要隔2x8x23ms才調用一次按鍵比較程
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -