📄 13程序.asm
字号:
;--------------------------------------------------------------------------------------
; BODY: PHILIS P89LPC938
;FUNCTION: POWER CORTROL
; XTAL: 11.0592Mhz
; EDITION: C0.0
;---------------------------------------------------------------------------------------
$NOMOD51
$INCLUDE (REG932.INC)
KEY1 BIT P1.4;键盘输入
DP BIT P0.0
LED1H BIT P1.2;LED显示位选
LED2H BIT P2.5
LED3H BIT P2.4
LED4H BIT P2.3
LED5H BIT P2.2
LED6H BIT P2.1
LED7H BIT P2.7
LED8H BIT P2.6
BZ BIT P1.7
DE BIT P2.0
IC BIT 05H;位寻址区20H
; ERR BIT 01H
AUTOFL BIT 04H
HI BIT 06H
TXDON BIT 03H
VC BIT 00H
HV BIT 01H
RXDON BIT 07H
GLINT BIT 08H;;位寻址区30H
KBNRFL BIT 09H
KBINFL BIT 0AH
DLXXMSFL BIT 0BH
ADCHG BIT 0CH ;AD切换标志位
;IVFL BIT 0DH ;
; HIVFL BIT 0EH ;
;AUTO BIT 11H ;允许手动调节?
BZ2SFL BIT 12H ;错误提示
EQUFL BIT 13H ;相等标志位
LOWFL BIT 14H ;
HIGHFL BIT 15H ;PWM极限 PWM
DIPALL BIT 17H
DECFL BIT 18H
ADDFL BIT 19H
SECFL BIT 1AH;是否进行PWM调节.
TM100FL BIT 1BH;是否进行快速加减
DECSOON BIT 1CH
ADDSOON BIT 1DH
TM3SFL BIT 1EH
SETINFL BIT 1FH
ZEROFL BIT 20H
SETADFL BIT 21H
ADDRSS BIT 22H
DATASS BIT 23H
ADDINCFL BIT 24H
DIPALL0 BIT 25H
RIEND BIT 26H
TBEGIN BIT 27H
TXGOON BIT 28H
SAVEFL BIT 29H
DPARA1 DATA 28H
IVFL BIT 40H ;
HIVFL BIT 41H ;
AUTO BIT 42H ;允许手动调节?
ONOFF BIT 43H
PARA1 EQU 30H
MAXI EQU 30H
MAXIH DATA 30H ;参数区
MAXIL DATA 31H
DMAXI EQU 31H
MAXV EQU 32H
MAXVH DATA 32H
MAXVL DATA 33H
DMAXV EQU 33H
ADDR DATA 34H
BTRC DATA 35H
PARA DATA 36H
PARAM EQU 36H
COMMR EQU 37H
COMM EQU 39H
COMM7 DATA 37H
COMM6 DATA 38H;ADDR
COMM5 DATA 39H;HI
COMM4 DATA 3AH;LI
COMM3 DATA 3BH;HV
COMM2 DATA 3CH;LV
COMM1 DATA 3DH;PARA
COMM0 DATA 3EH;ADD
TIME1 DATA 3FH
ADDR1 DATA 40H
ADDR0 DATA 41H
COUNT4 DATA 42H
COUNT3 DATA 43H
SETTIME DATA 44H
TIME3 DATA 45H
MCOUNT DATA 48H
MONCNT5 DATA 49H
MONCNT DATA 4AH
COUNT2 DATA 4BH
TM3SBF DATA 4CH
KBIN2STM DATA 4DH
COUNT1 DATA 4EH
TIME0 DATA 4FH
DLXXTM DATA 50H
COUNT DATA 51H
KBNRTM DATA 52H
KBDT DATA 53H
MONCNT3 DATA 54H
MONCNT2 DATA 55H
MONCNT1 DATA 56H
MONCNT0 DATA 57H
ADSI EQU 58H;设置的电压电流
ADSIH DATA 58H
ADSIL DATA 59H
ADSI1 EQU 59H
ADSV EQU 5AH
ADSVH DATA 5AH
ADSVL DATA 5BH
ADSV1 EQU 5BH
DPARA DATA 5CH
ADDR2 DATA 5DH
TXADDR DATA 5EH
TIMBZ2S DATA 60H
QUREG EQU 61H ;高字节,低地址
QUREG1 DATA 61H
QUREG0 DATA 62H
QUREGL EQU 62H
AIREG EQU 63H ;高字节,低地址
AIREG1 DATA 63H
AIREG0 DATA 64H
AIREGL EQU 64H
OPREG EQU 65H ;高字节,低地址
OPREG1 DATA 65H
OPREG0 DATA 66H
OPREGL EQU 66H
LED5 DATA 67H
LED6 DATA 68H ;
LED7 DATA 69H ;显示缓存
LED8 DATA 6AH ;
LED_2 EQU 6AH
LED4 DATA 6BH ;
LED3 DATA 6CH ;显示缓存
LED2 DATA 6DH ;
LED1 DATA 6EH ;显示缓存
LED EQU 6EH ;显示缓存
LED9 DATA 20H ;
;-------------------------------------------------------------------------------------------------
ORG 0000H ;程序执行开始地址
LJMP START ;跳到标号START执行
ORG 0003H ;外中断0中断程序入口
RETI ;外中断0中断返回
ORG 000BH ;定时器T0中断程序入口
LJMP TONE ;TF0
ORG 0013H ;外中断1中断程序入口
RETI ;外中断1中断返回
ORG 001BH ;定时器T1中断程序入口
RETI
LJMP TTWO ;TF1
ORG 0023H ;串行中断程序入口地址
ORG 0023H ;串行中断程序入口地址
LJMP Rcv_ISR ;串行中断程序TI&RI
ORG 002BH ;掉电检测 BOF
RETI
ORG 0033H ;I2中断
RETI
ORG 003BH ;KBI中断
RETI
ORG 0043H ;比较器中断
RETI
ORG 004BH ;SPI中断
RETI
ORG 005BH ;捕获/比较单元
RETI
ORG 006BH ;串口中断TX
LJMP Send_ISR
ORG 0073H ;数据EEPROM中断
RETI
ORG 0083H ;AD转换中断
RETI
;*******************************************************
;函数:void main()
;*******************************************************
ORG 0100H
START: MOV SP, #6EH;,16个字节作堆栈
;-----------------开机清内存-------------------------
MOV MONCNT0,#128
MOV R0 ,#0
MOV A ,#0
LOOP: MOV @R0 ,A
INC R0
DJNZ MONCNT0,LOOP
;------------------------------------------------------
MOV DPTR ,#0
MOV A ,#0
WERTY: MOVX @DPTR ,A
INC DPTR
DJNZ MONCNT0 ,WERTY
WERTY1: MOVX @DPTR ,A
INC DPTR
DJNZ MONCNT0,WERTY1
;-----------------------------------------------
;----------------读EEPOM内参数----------------------------------------------
MOV R0,#10 ;从EEPROM的10H开始
MOV R1,#PARA1
MOV MONCNT1,#7
LOOP23: MOV DEECON,#0;字节读写模式.
MOV DEEADR,R0
WAIT1: MOV A , DEECON
JNB ACC.7,WAIT1
MOV @R0,DEEDAT
INC R0
INC R1
DJNZ MONCNT1,LOOP23
;-----------------串口设置---------------------------------------------
MOV SSTAT,#0E0H ;独立中断
MOV SCON,#050H ;串口模式1,接收使能
MOV BRGCON,#00H ;选择波特率发生器
MOV DPTR,#TAB2
MOV A,BTRC
RL A
MOV MONCNT0,A
MOVC A,@A+DPTR
MOV BRGR1,A ;波特率9600bit/s
MOV BRGR1,#04
INC MONCNT1
MOV A,MONCNT0
MOVC A,@A+DPTR
MOV BRGR0,A
MOV BRGR0,#70H
MOV BRGCON,#03H ;启动UART的波特率发生器
SETB ES
SETB EST ;开中断
SETB DE ;接收状态
SETB REN ;允许接收
CLR SM2
;-------------------------------------------------
SETB DP ;不显示小数点
; MOV TIME0,#50;定时100MS
MOV TIME1,#3;定时2S
;MOV ADDR0,#1
MOV LED9,#0FFH
MOV COMM7,#0AAH
MOV MCOUNT,#2
;-----------------定时器设置晶振11M,周期为0.18084-------------------------------------
MOV TMOD, #11H;两个定时器,16位,与门控无关!
MOV TAMOD, #0;定时器模式1
MOV TH0, #0D4H
MOV TL0, #99H;定时2MS
SETB TR0
;----------------TIME2----------------------------
SETB EA ; 使能中断
SETB ET0
;SETB ET1
SETB IP0.3
MOV A,#08H
;SETB IP0H.3;T1最高
ORL A,IP0H
MOV IP0H,A
;----------------I/O SET----------------------------------------------
MOV P0M1, #0FFH
MOV P0M2, #0FFH
MOV P1M1, #0FFH
MOV P1M2, #0EFH;P1.4为KEY
MOV P2M1, #0FFH
MOV P2M2, #0FFH
;-------------------调试用-------------------------
MOV COMM7,#0AAH
MOV COMM6,#01
MOV COMM5,#0
MOV COMM4,#75
MOV COMM3,#0
MOV COMM2,#60
MOV COMM1,#08H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -