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

📄 51bc.asm

📁 本程序使用于爱思51-B型高级用户板功能测试及演示,是用asm写的
💻 ASM
📖 第 1 页 / 共 2 页
字号:
              mov dptr,#com_8255    ;8255 PC,PB为输出,PA为输入
              mov  a,#90h
              movx @dptr,a
              acall   lopo        ;打印“#-#-”20个
              acall   hoho        ;换一行       
              mov A,#00H
              MOV R6,#00H
              MOV DPTR,#TAB1
        lop1: MOV A,R6            ;打印"1234567890ABCDEFGHIJKLMNOP
              movc a,@a+dptr      ;QRSTUVWXYZ    OK!"字符
              acall sozo
              inc r6
              CjnE r6,#46,lop1
              acall hoco          ;换行
              acall lopo          ;再打印“#-#-”20个
              acall hoho          ;换行
              acall hogo          ;设定打印汉字方式
              mov A,#00H
              MOV R6,#00H
              MOV DPTR,#TAB2
        lop2: MOV A,R6            ;打印"欢迎使用南京爱思51B高级用户板!"
              movc a,@a+dptr
              acall sozo
              inc r6
              CjnE r6,#34,lop2 
              acall hoco          ;回车换行
              acall hoco  
              jmp $               ;演示结束!


        ho1o:mov a,#1bh  ;调用一级库
             acall sozo
             mov a,#38h
             acall sozo
             mov a,#00h
             acall sozo
             acall hoho
             ret

     hoho:mov a,#0ah     ;换行
           acall sozo
           ret

      hoco:mov a,#0dh    ;回车换行
           acall sozo
           ret
     hogo:mov a,#1bh     ;选定16*16汉字点阵
          acall sozo
          mov a,#38h
          acall sozo
          mov a,#00h
          acall sozo
          ret  
    
      lopo: mov  r7,#15
      l1po: mov a,#23h    ;"#"
            acall  sozo   
            mov a,#2Dh    ;"-"
            acall sozo    ;
            djnz r7,l1po
            ret
      sozo: push dph      ;打印单字符或传输指令
            push dpl
            push acc
            mov dptr,#pa_8255
       soz1:movx a,@dptr
            jb acc.7,soz1     ;/busy ?
            pop acc
            mov dptr,#pb_8255
            movx @dptr,a
            inc  dptr
            mov a,#00h        ;stb=0
            movx @dptr,a
            mov a,#01h        ;stb=1
            movx @dptr,A
            pop dpl
            pop dph
            ret        

   ;ORG 800H  ;单字符字码表(单字节)
  TAB1: db 31h,32h,33h,34h,35h,36h,37h,38h,39h,30h
   db 41h,42h,43h,44h,45h,46h,47h,48h,49h,4ah
   db 4bh,4ch,4dh,4eh,4fh,51h,52h,53h,54h,0dh
   db 55h,56h,57h,58h,59h,5ah,20h,20h,20h,20h
   db 2dh,2dh,4fh,4bh,20h,21h
   ;org 900h  ;汉字字码表(双字节)
 TAB2:  db 0bbh,0b6h,0d3h,0adh,0cah,0b9h,0d3h,0c3h ;“欢迎使用”
   db 0c4h,0cfh,0beh,0a9h,0b0h,0aeh,0cbh,0bch ;"南京爱思"
   db 0A3h,0b5h,0a3h,0b1h,0a3h,0c2h   ;"51B”
   db 0b8h,0dfh,0bch,0b6h,0d3h,0c3h  ;”高级用“
   db 0bbh,0a7h,0b0h,0e5h,0a3h,0a1h  ;"户板!"
	
;--------------0300h-------------------------------------
		org	0300h
test62256:	mov	40h,#02h	;检查62256好坏
		mov	41h,#05h
		mov	42h,#06h
		mov	43h,#13h
		mov	44h,#13h
		mov	dptr,#0000h
test62256a:	mov	a,#55h
		movx	@dptr,a
		cpl	a
		movx	a,@dptr
		cjne	a,#55h,test62256err
		inc	dptr
		mov	a,dph
		CJNE  A,#80H,test62256a
		lcall	delay
	      mov	44h,#09h	;
		mov	45h,#11h
		mov	46h,#11h
		mov	47h,#0dh
      	lcall	dispall 	     ;显示'256 GOOD'
	      jmp  $                 ;62256 good
test62256err:mov 45h,#0eh	     ;显示‘256 err’
		mov	46h,#12h
		mov	47h,#12h
            lcall dispall
            jmp   test62256
;---------------------------------------------------
		ORG	0400H
testad574:	mov   DPTR,#COM_8255   ;8255的PC1,PC2,PC3控制模拟输入通道,因此应先设置8255
            MOV   A,#10010000B     ;PA IS INPUT, PB IS OUTPUT ,PC IS OUTPUT
            MOVX  @dptr,A
            mov	40h,#0ah    	;在LED上显示'AD574',
		mov	41h,#0dh    	;通道号及电压值
		mov	42h,#05h    	;延时查询P3.2口(AD574_status)方式,如采用中断请修改本程序!
		mov	43h,#07h
		mov	44h,#04h
		mov	45h,#13h
		mov	46h,#13h
		mov	47h,#13h
		acall	dispall                   
ad574a: 	acall	scankey 	;读AD通道号
		jnc	ad574a
		mov	a,r1
		anl	a,#07h
		rl a              ;切换通道
            PUSH DPH
            PUSH DPL
            MOV  DPTR,#PC_8255
            MOVX @DPTR,A
            POP DPL
            POP DPH
ad574b: 	acall	sample
		acall	adtobuff
		acall	dispall
		acall	delay       ;显示延时
		acall	delay
		sjmp	ad574b

adtobuff:	mov	a,r0		;high 8 bit
		anl	a,#0fh
		mov	46h,a
		mov	a,r0
		swap	a
		anl	a,#0fh
		mov	45h,a
		mov	a,r1
		mov	47h,a
		ret 
sample: 	mov	dptr,#str_574	;起动AD574
		setb	p3.3
		clr	a
		movx	@dptr,a
		jb	p3.3,$            ;查询STATUS(P3.3)
		mov	dptr,#hi_574
		;inc	dptr
		movx	a,@dptr
		mov	r0,a		      ;high 8 bit
	      mov	dptr,#lo_574
		movx	a,@dptr
		swap	a
		anl	a,#0fh
		mov	r1,a              ;low 8 bit
		ret
;-------------------------------------------------------------
		org	0700h
testda: 	mov	40h,#0dh	      ;从0832上输出到
		mov	41h,#01h	      ;ad574的0通道
		mov	42h,#0ah	      ;并在LED上显示
		nop			      ;0832,输出值,ad574的
	      PUSH DPH
            PUSH DPL
            mov   DPTR,#COM_8255   ;8255的PC1,PC2,PC3控制模拟输入通道,因此应先设置8255
            MOV   A,#10010000B     ;PA IS INPUT, PB IS OUTPUT ,PC IS OUTPUT
            MOVX  @dptr,A
	      MOV   DPTR,#PC_8255    
            MOV   A,#00H
            MOVX  @DPTR,A          ;选择AD574 in0 通道
            POP   DPL
            POP   DPH
testdaa:	mov	dptr,#cs_0832	      ;采样值
		clr	a
		mov	43h,a
		mov	44h,a
		movx	@dptr,a
		djnz	0e0h,$
		acall	sample		;采样ad574
		acall	adtobuff
		acall	dispall 	      ;显示
		acall	delay	      	;延时
		mov	dptr,#cs_0832
		mov	a,#80h
		mov	43h,#08h
		mov	44h,#00h
		movx	@dptr,a
		clr	a
		djnz	0e0h,$
		acall	sample		;采样ad574
		acall	adtobuff
		acall	dispall 	      ;显示
		acall	delay		      ;延时
		mov	dptr,#cs_0832
		mov	a,#0ffh
		mov	43h,#0fh
		mov	44h,#0fh
		movx	@dptr,a
		clr	a
		djnz	0e0h,$
		acall	sample		;采样ad574
		acall	adtobuff
		acall	dispall 	;显示
		acall	delay		;延时
		ajmp	testdaa
;---------------------------------------------------
		org	0800h
clock:	clr	a		;时钟子程序
		mov	40h,a
		mov	41h,a
		mov	43h,a
		mov	44h,a
		mov	46h,a
		mov	47h,a
		mov	a,#13h
		mov	42h,a
		mov	45h,a
		lcall	dispall
		mov	30h,#80h
		mov	31h,#40h
inclock:	lcall	scankey
		jnc	inclock
		mov	a,r1
		cjne	a,#12h,inclock1
		sjmp	timeexec	            ;EXEC 键
inclock1:	cjne	a,#0ah,inclock2
inclock2:	jnc	inclock
		mov	a,30h	               	;有键
		mov	dptr,#com_8279
		movx	@dptr,a
		mov	a,r1
		mov	r0,31h
		mov	@r0,a
		inc	31h
		mov	dptr,#dispcode
		movc	a,@a+dptr
		mov	dptr,#dat_8279
		movx	@dptr,a
		inc	30h
		mov	a,30h
		cjne	a,#82h,inclock3
		inc	30h
		inc	31h
		sjmp	inclock4
inclock3:	cjne	a,#85h,inclock4
		inc	30h
		inc	31h
inclock4:	mov	a,30h
		cjne	a,#88h,inclock
		mov	30h,#80h
		mov	31h,#40h
		sjmp	inclock
timeexec:	mov	r0,#40h
		mov	r1,#52h
		lcall	picktime	;52h=hour 51h=minutes
		lcall	settime 	;50h=second
rdclockwait:mov	dptr,#900ah
		movx	a,@dptr
		jb	0e7h,rdclockwait
		lcall	rdtime
		lcall	savebuff
		lcall	dispall
		ajmp	rdclockwait
		nop
;------------------------------------------------
		org	0900h
common: 	mov	sp,#60h
		mov	tmod,#20h
		mov	th1,#0fdh
		mov	tl1,#0fdh
		mov	scon,#50h
		mov	pcon,#00h
		clr	ea
		setb	tr1
send:		mov	dptr,#buffer
		mov	r2,#0fh
send1:	clr	a
		movc	a,@a+dptr
		mov	sbuf,a
		jnb	ti,$
		clr	ti
		inc	dptr
		djnz	r2,send1
		jnb	ri,send
		clr	ri
		mov	a,sbuf
		cjne	a,#55h,send
		sjmp	$
buffer: 	db	'Designed by cai'
picktime:	mov	r2,#03h
picktime1:	mov	a,@r0
		swap	a
		inc	r0
		orl	a,@r0
		mov	@r1,a
		inc	r0
		inc	r0
		dec	r1
		djnz	r2,picktime1
		ret
settime:	mov	r0,#50h
		mov	dptr,#900ah
		movx	a,@dptr
		mov	a,#20h
		movx	@dptr,a
		inc	dptr
		mov	a,#80h
		movx	@dptr,a
		mov	dptr,#9000h
		mov	a,@r0
		inc	r0
		movx	@dptr,a
		inc	dptr
		inc	dptr
		mov	a,@r0
		inc	r0
		movx	@dptr,a
		inc	dptr
		inc	dptr
		mov	a,@r0
		movx	@dptr,a
		mov	dptr,#900bh
		mov	a,#02h
		movx	@dptr,a
		ret
rdtime: 	mov	dptr,#9000h
		movx	a,@dptr
		mov	50h,a		;rd second
		inc	dptr
		inc	dptr
		movx	a,@dptr 	;rd minutes
		mov	51h,a
		inc	dptr
		inc	dptr
		movx	a,@dptr 	;rd hour
		mov	52h,a
		ret
savebuff:	mov	r0,#52h
		mov	r1,#40h
		mov	r2,#03h
savebuff1:	mov	a,@r0
		swap	a
		anl	a,#0fh
		mov	@r1,a
		inc	r1
		mov	a,@r0
		anl	a,#0fh
		mov	@r1,a
		inc	r1
		inc	r1
		dec	r0
		djnz	r2,savebuff1
		ret
		END
 

⌨️ 快捷键说明

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