⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sydzc.asm

📁 能够测量0hz~1Mhz范围内的各种频率
💻 ASM
📖 第 1 页 / 共 2 页
字号:
        LCDE	 BIT P2.2     ;LCD控制口(1602A)
        LCDRW	 BIT P2.1
        LCDRS	 BIT P2.0
        AD_EOC	 BIT P2.3     ;ADC控制口
        AD_CLK   BIT P2.4
        AD_IN	 BIT P2.5
        AD_OUT 	 BIT P2.6
        AD_CS 	 BIT P2.7
        KEY_PORT EQU P1       ;键盘接口
        LCD_PORT EQU P0       ;LCD数据口
        KEY_FLAG BIT  20H.0   ;按键标志
        KEY_DATA DATA 21H     ;键值存放
        AD_DATA  DATA 22H     ;
        AD_DATAL DATA 39H
        AD_CON	 DATA 3BH
        ;=====================================
        DANJIA_ZS  DATA 23H   ;单价整数
        DANJIA_XS  DATA 24H   ;单价小数
        DANJIA_S   DATA 25H   ;单价十
        DANJIA_Y   DATA 26H   ;单价元
        DANJIA_J   DATA 27H   ;单价角
        DANJIA_F   DATA 28H   ;单价分
        SPHAO      DATA 29H   ;商品号
        DANJIA0_ZS DATA 2AH   ;商品1单价整数位
        DANJIA0_XS DATA 2BH   ;商品1单价小数位
        DANJIA1_ZS DATA 2CH   ;商品2单价整数位
        DANJIA1_XS DATA 2DH   ;商品2单价小数位
        DANJIA2_ZS DATA 2EH   ;商品3单价整数位
        DANJIA2_XS DATA 2FH   ;商品3单价小数位
        ;=========================================
        DANJIAO0_S DATA 31H
        DANJIAO0_Y DATA 32H
        DANJIAO0_J DATA 33H
        DANJIAO0_F DATA 34H
        DANJIAO1_S DATA 35H
        DANJIAO1_Y DATA 36H
        DANJIAO1_J DATA 37H
        DANJIAO1_F DATA 38H
        DANJIAO2_S DATA 39H
        DANJIAO2_Y DATA 3AH
        DANJIAO2_J DATA 3BH
        DANJIAO2_F DATA 3CH
        AD_DATA1   DATA 3DH   ;KG
        AD_DATA2   DATA 3EH
        AD_DATA3   DATA 3FH
        ;=========================================
        ZHJIA_ZS   DATA 40H   ;商品总价整数位
        ZHJIA_XS   DATA 41H   ;商品总价小数位
        ZHJIA_B    DATA 42H   ;商品总价'百'
        ZHJIA_S    DATA 43H   ;商品总价'十'
        ZHJIA_Y    DATA 44H   ;商品总价'元'
        ZHJIA_J    DATA 45H   ;商品总价'角'
        ZHJIA_F    DATA 46H   ;商品总价'分'
        ;==========================================
        LJ_ZS      DATA 47H   ;商品总价累计整数位
        LJ_XS      DATA 48H   ;商品总价累计小数位
        LJ_B       DATA 49H   ;商品累计价'百'
        LJ_S       DATA 4AH   ;商品累计价'十'
        LJ_Y       DATA 4BH   ;商品累计价'元'
        LJ_J       DATA 4CH   ;商品累计价'角'
        LJ_F       DATA 4DH   ;商品累计价'分'
        ;==========================================
        LSL        DATA 55H   ;秒个位
        LSH 	   DATA 54H   ;秒十位
        LML    	   DATA 53H   ;分个位
        LMH    	   DATA 52H   ;分十位
        LHL    	   DATA 51H   ;时个位
        LHH    	   DATA 50H   ;时十位
        WEEK       DATA 56H
        TIM0       DATA 57H   ;辅助计数器0
        TIM1       DATA 58H   ;辅助计数器1
        ;==========================================
        ORG 0000H
        AJMP MAIN
        ORG 000BH
        AJMP TIME0
        ORG 0030H
MAIN:   MOV SP,#70H
        MOV  TMOD,#02H	      ;定时器初始化
        MOV  TH0,#164
        MOV  TL0,#164
        MOV  TIM0, #100
        MOV  TIM1, #100
   	SETB	ET0
   	SETB 	EA            ;开中断
        ACALL SYSTEMINIT      ;系统初使化
        SETB 	TR0	      ;启动定时器
        ACALL LCDINIT         ;液晶初使化
MAIN_LOOP1:
        ACALL LCDDISP1
        ACALL KEYSCAN         ;键盘扫描选择商品类型,从而决定单价
        JNB KEY_FLAG,MAIN_LOOP1
        MOV A,KEY_DATA
	XRL A,#15
        JZ MAIN_LOOP3
        MOV A,KEY_DATA
        XRL A,#13
        JZ MAIN_LOOP4
        MOV A,KEY_DATA
        XRL A,#14
        JZ MAIN_LOOP5
        ACALL KEY_JUST1       ;决定商品类型,确定单价
        ACALL AD_TLC2543
MAIN_LOOP2:
        ACALL DATA_CHULI1
        ACALL DATA_CHULI2
        ACALL DATA_CHULI3
	ACALL LCDDISP2
        ACALL DELAY5S
        MOV A,#01H
        ACALL WriteCommandLCD   ;显示清屏
        ;--------总价处理---------
        MOV R1,ZHJIA_ZS
        MOV R2,ZHJIA_XS
        MOV R3,LJ_ZS
        MOV R4,LJ_XS
        ACALL BCDA
        MOV LJ_ZS,R6
        MOV LJ_XS,R7
        ACALL HB2
        MOV A,R3
        ACALL HBCD
        MOV LJ_B,R7
        MOV A,R4
        ACALL HBCD
        MOV LJ_S,R6
        MOV LJ_Y,R7
        MOV A,R5
        ACALL HBCD
        MOV LJ_J,R6
        MOV LJ_F,R7
        AJMP MAIN_LOOP1
MAIN_LOOP3:
        ACALL LCDDISP3
        ACALL DELAY5S
        ;MOV A,#01H
        ;ACALL WriteCommandLCD   ;显示清屏
        MOV  LJ_ZS   , #00H
        MOV  LJ_XS   , #00H     ;累加金额
        AJMP MAIN_LOOP1
MAIN_LOOP5:
        MOV SPHAO,#3EH
        ACALL KEYSCAN
        ACALL LCDDISP4
        JNB KEY_FLAG,MAIN_LOOP5
        ACALL KEY_JUST2       ;决定商品类型,确定单价
        ACALL DATA_CHULI1
        MOV R0,#25H
        MOV R7,#4
DJXG_1: ACALL LCDDISP4
        ACALL KEYSCAN
        JNB KEY_FLAG,DJXG_1
        MOV A,KEY_DATA
        CJNE A,#0AH,DJXG_3
DJXG_3: JNC DJXG_1
        MOV @R0,KEY_DATA
        INC R0                          ;地址加一
        DJNZ R7,DJXG_1
        ACALL LCDDISP4
        ACALL DATA_CHULI4
DJXG_2:
        ACALL KEYSCAN
        JNB KEY_FLAG,DJXG_2
        MOV A,KEY_DATA
        CJNE A,#15,MAIN_LOOP5
        AJMP MAIN_LOOP1
MAIN_LOOP4:
        CLR EA                          ;关中断
        MOV R0,#50H                     ;时间显存首地址
SJXGHH_1:
        ACALL LCDDISP1
        ACALL KEYSCAN
        JNB KEY_FLAG,SJXGHH_1
        CJNE A,#0AH, SJXGHH_3
SJXGHH_3:
        JNC SJXGHH_1
        CJNE A,#3, SJXGHH_4
SJXGHH_4:
        JNC  SJXGHH_1
        MOV @R0,KEY_DATA
        INC R0                          ;地址加一
;---------------------------
SJXGHL_1:
        ACALL LCDDISP1
        ACALL KEYSCAN
        JNB KEY_FLAG,SJXGHL_1
        CJNE A,#0AH, SJXGHL_3
SJXGHL_3:
        JNC SJXGHL_1
        MOV A,LHH
        CJNE A,#2, SJXGHL_4
        MOV A,KEY_DATA
        CJNE A,#4,SJXGHL_5
SJXGHL_5:
        JNC SJXGHL_1
SJXGHL_4:
        MOV @R0,KEY_DATA
        INC R0                       ;地址加一
        ACALL LCDDISP1
;--------------------------------------------
SJXGMH_1:
        ACALL LCDDISP1
        ACALL KEYSCAN
        JNB KEY_FLAG,SJXGMH_1
        CJNE A,#0AH, SJXGMH_3
SJXGMH_3:
        JNC SJXGMH_1
        CJNE A,#6, SJXGMH_4
SJXGMH_4:
        JNC  SJXGMH_1
        MOV @R0,KEY_DATA
        INC R0
;---------------------------------------------
SJXGML_1:
        ACALL LCDDISP1
        ACALL KEYSCAN
        JNB KEY_FLAG,SJXGML_1
        CJNE A,#0AH, SJXGML_3
SJXGML_3:
        JNC SJXGML_1
        MOV @R0,KEY_DATA                         ;地址加一
        ACALL LCDDISP1
        INC R0
        INC R0
        INC R0
WEEKCH_1:
        ACALL LCDDISP1
        ACALL KEYSCAN
        JNB KEY_FLAG,WEEKCH_1
        CJNE A,#07H,WEEKCH_2
WEEKCH_2:
        JNC WEEKCH_1
        MOV @R0,KEY_DATA
        ACALL LCDDISP1
SJXG_2:
        ACALL KEYSCAN
        JNB KEY_FLAG,SJXG_2
        MOV A,KEY_DATA
        CJNE A,#15,MAIN_LOOP4
        SETB EA
        AJMP MAIN_LOOP1

;======================系统初使化=======================
SYSTEMINIT:
        MOV DANJIA0_ZS,#00H
        MOV DANJIA0_XS,#96H   ;规定商品一价格1.5元
        MOV DANJIA1_ZS,#02H
        MOV DANJIA1_XS,#0EEH   ;规定商品二价格7.5元
        MOV DANJIA2_ZS,#0DH
        MOV DANJIA2_XS,#0DEH   ;规定商品三价格35.50元
        CLR A
        MOV AD_DATA,A
	MOV AD_DATAL,A
        CLR 20H.0             ;判断有无键按下标志位
        MOV  DANJIA_ZS,A
        MOV  DANJIA_XS,A      ;单价初使化
        MOV  ZHJIA_ZS, A
        MOV  ZHJIA_XS, A      ;总价初使化为0
        MOV  DANJIA_S, A
        MOV  DANJIA_Y, A
        MOV  DANJIA_J, A
        MOV  DANJIA_F, A
        MOV  LJ_ZS   , A
        MOV  LJ_XS   , A      ;累加金额
        MOV  LJ_B,     A
        MOV  LJ_S,     A
        MOV  LJ_Y,     A
        MOV  LJ_J,     A
        MOV  LJ_F,     A
        MOV  AD_DATA,  A      ;AD转换所得数据
       	MOV  KEY_DATA, A      ;键盘扫描值
        MOV  AD_CON  , A
        ;================
        MOV  LSL,#00H         ;置显示初始值
        MOV  LSH,#05H
        MOV  LML,#09H
        MOV  LMH,#05H
        MOV  LHL,#03H
        MOV  LHH,#02H         ;初始值00-00-00
        MOV  WEEK,#00H
        ;=====
        ACALL AD_TLC2543
        ACALL AD_TLC2543
        RET
;=====================LCDINIT=============================
LCDINIT:ACALL D5MS    ;----------------LCD INI
        MOV A,#38H
        ACALL WriteCommandLCD
        ACALL D5MS
        MOV A,#08H
        ACALL WriteCommandLCD   ;关闭显示
        MOV A,#01H
        ACALL WriteCommandLCD   ;显示清屏
        MOV A,#06H
        ACALL WriteCommandLCD   ;显示光标移动设置
        MOV A,#0CH
        ACALL WriteCommandLCD   ;显示开及光标设置
        RET
WriteDataLCD:       ;-------------写数据
        ACALL ReadStatusLCD
        MOV LCD_PORT,A
        SETB LCDRS
        CLR LCDRW
        CLR LCDE
        SETB LCDE
        RET
WriteCommandLCD:   ;------------------写指令
        ACALL ReadStatusLCD
 	MOV LCD_PORT,A
        CLR LCDRS
        CLR LCDRW
        CLR LCDE
        SETB LCDE
        RET
ReadStatusLCD:    ;---------------忙检测
       	PUSH ACC
       	MOV A,#0FFH
       	MOV LCD_PORT,A
       	CLR LCDRS
       	SETB LCDRW
       	CLR LCDE
       	SETB LCDE
WAIT_LCD:
	MOV A,P0
       	JB ACC.7,WAIT_LCD
       	POP ACC
       	RET
D5MS:	PUSH	ACC  ;-----------500us延时
	MOV	A,#0
	DJNZ	ACC,$
	POP	ACC
     	RET
;==========================LCDDISP========================
LCDDISP1:
        MOV     A,#80H       ;设定从第一行(80H)的第5个位置开始显示
  	ACALL   WriteCommandLCD
        MOV     A,#'A'
  	ACALL 	WriteDataLCD
        MOV     A,#' '
  	ACALL 	WriteDataLCD
        MOV     A,#'B'
  	ACALL 	WriteDataLCD
        MOV     A,#'e'
  	ACALL 	WriteDataLCD
  	MOV     A,#'a'
  	ACALL 	WriteDataLCD
        MOV     A,#'u'
  	ACALL 	WriteDataLCD
        MOV     A,#'t'
  	ACALL 	WriteDataLCD
        MOV     A,#'i'
  	ACALL 	WriteDataLCD
        MOV     A,#'f'
  	ACALL 	WriteDataLCD
        MOV     A,#'u'
  	ACALL 	WriteDataLCD
        MOV     A,#'l'
  	ACALL 	WriteDataLCD
        MOV     A,#' '
  	ACALL 	WriteDataLCD
        MOV     A,#'D'
  	ACALL 	WriteDataLCD
        MOV     A,#'a'
  	ACALL 	WriteDataLCD
        MOV     A,#'y'
  	ACALL 	WriteDataLCD
        MOV     A,#'!'
  	ACALL 	WriteDataLCD
        MOV     A,#0C0H       ;设定从第一行(80H)的第5个位置开始显示
  	ACALL   WriteCommandLCD
        MOV     A,#' '
  	ACALL 	WriteDataLCD
        MOV     A,#' '
  	ACALL 	WriteDataLCD
        MOV     A,LHH
  	ADD	A,#30H
  	ACALL 	WriteDataLCD
        MOV     A,LHL
  	ADD	A,#30H
  	ACALL 	WriteDataLCD
        MOV     A,#'-'
  	ACALL 	WriteDataLCD
        MOV     A,LMH
  	ADD	A,#30H
  	ACALL 	WriteDataLCD
        MOV     A,LML
  	ADD	A,#30H
  	ACALL 	WriteDataLCD
        MOV     A,#'-'
  	ACALL 	WriteDataLCD
        MOV     A,LSH
  	ADD	A,#30H
  	ACALL 	WriteDataLCD
        MOV     A,LSL
  	ADD	A,#30H
  	ACALL 	WriteDataLCD
        MOV     A,#' '
        ACALL 	WriteDataLCD
        MOV     R6,WEEK
        MOV     A,R6
        MOV     DPTR,#TABL1
        MOVC    A,@A+DPTR
        ACALL 	WriteDataLCD
        MOV     A,R6
        MOV     DPTR,#TABL2
        MOVC    A,@A+DPTR
        ACALL 	WriteDataLCD
        MOV     A,R6
        MOV     DPTR,#TABL3
        MOVC    A,@A+DPTR
        ACALL 	WriteDataLCD
        RET
LCDDISP2:    ;--------------LCD显示子程序
        MOV     A,#01H
        ACALL   WriteCommandLCD   ;显示清屏
        MOV     A,#80H       ;设定从第一行(80H)的第5个位置开始显示
  	ACALL   WriteCommandLCD
  	MOV     A,#'S'
  	ACALL 	WriteDataLCD
        MOV     A,#'P'
  	ACALL 	WriteDataLCD
  	MOV     A,SPHAO
  	ADD	A,#30H
  	ACALL 	WriteDataLCD
        MOV     A,#20H        ;空格
  	ACALL 	WriteDataLCD
       	MOV     A,#'D'
  	ACALL 	WriteDataLCD
        MOV     A,#'J'
  	ACALL 	WriteDataLCD
        MOV     A,#3AH        ;":"号
  	ACALL 	WriteDataLCD
        MOV     A,DANJIA_S
  	ADD	A,#30H
  	ACALL 	WriteDataLCD
        MOV     A,DANJIA_Y
  	ADD	A,#30H
  	ACALL 	WriteDataLCD
        MOV     A,#2EH        ;"."号
  	ACALL 	WriteDataLCD
        MOV     A,DANJIA_J
  	ADD	A,#30H
  	ACALL 	WriteDataLCD
        MOV     A,DANJIA_F
  	ADD	A,#30H
  	ACALL 	WriteDataLCD
        MOV     A,#5CH
  	ACALL 	WriteDataLCD
        MOV     A,#2FH        ;"/"号
  	ACALL 	WriteDataLCD
        MOV     A,#'K'
  	ACALL 	WriteDataLCD
        MOV     A,#'G'
  	ACALL 	WriteDataLCD
  	MOV     A,#0C0H       ;设定从第二行(C0H)的第0个位置开始显示
  	ACALL   WriteCommandLCD
        MOV     A,#'Z'
  	ACALL 	WriteDataLCD
        MOV     A,#'J'
  	ACALL 	WriteDataLCD
        MOV     A,#3AH        ;":"号
  	ACALL 	WriteDataLCD
  	MOV     A,ZHJIA_B
  	ADD	A,#30H
  	ACALL 	WriteDataLCD
  	MOV     A,ZHJIA_S
  	ADD	A,#30H
  	ACALL 	WriteDataLCD
        MOV     A,ZHJIA_Y
  	ADD	A,#30H
  	ACALL 	WriteDataLCD
  	MOV     A,#2EH        ;.
  	ACALL 	WriteDataLCD
  	MOV     A,ZHJIA_J
  	ADD	A,#30H
  	ACALL 	WriteDataLCD
  	MOV     A,ZHJIA_F
  	ADD	A,#30H
  	ACALL 	WriteDataLCD
        MOV     A,#' '       ;空格
  	ACALL 	WriteDataLCD
        MOV     A,#'G'
  	ACALL 	WriteDataLCD
        MOV     A,#'='
  	ACALL 	WriteDataLCD
        MOV     A,AD_DATA1
  	ADD	A,#30H
  	ACALL 	WriteDataLCD
        MOV     A,#2EH
        ACALL 	WriteDataLCD
        MOV     A,AD_DATA2
  	ADD	A,#30H
  	ACALL 	WriteDataLCD
        MOV     A,AD_DATA3
  	ADD	A,#30H
  	ACALL 	WriteDataLCD
        RET
LCDDISP3:
        MOV A,#01H
        ACALL WriteCommandLCD   ;显示清屏
        MOV     A,#80H       ;设定从第一行(80H)的第5个位置开始显示
  	ACALL   WriteCommandLCD
  	MOV     A,#'L'
  	ACALL 	WriteDataLCD
        MOV     A,#'J'
  	ACALL 	WriteDataLCD
        MOV     A,#':'
  	ACALL 	WriteDataLCD
        MOV     A,#0F6H
  	ACALL 	WriteDataLCD
        MOV     A,#'='
  	ACALL 	WriteDataLCD
        MOV     A,LJ_B
  	ADD	A,#30H
  	ACALL 	WriteDataLCD
        MOV     A,LJ_S
  	ADD	A,#30H
  	ACALL 	WriteDataLCD
        MOV     A,LJ_Y
  	ADD	A,#30H
  	ACALL 	WriteDataLCD

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -