📄 32bits_multiple.asm
字号:
/* TMR3CN 0xC8 */
sbit TF3 = 0xCF ; /* TIMER 3 OVERFLOW FLAG */
sbit EXF3 = 0xCE ; /* TIMER 3 EXTERNAL FLAG */
sbit EXEN3 = 0xCB ; /* TIMER 3 EXTERNAL ENABLE FLAG */
sbit TR3 = 0xCA ; /* TIMER 3 ON/OFF CONTROL */
sbit CT3 = 0xC9 ; /* TIMER 3 COUNTER SELECT */
sbit CPRL3 = 0xC8 ; /* TIMER 3 CAPTURE SELECT */
/* TMR4CN 0xC8 */
sbit TF4 = 0xCF ; /* TIMER 4 OVERFLOW FLAG */
sbit EXF4 = 0xCE ; /* TIMER 4 EXTERNAL FLAG */
sbit EXEN4 = 0xCB ; /* TIMER 4 EXTERNAL ENABLE FLAG */
sbit TR4 = 0xCA ; /* TIMER 4 ON/OFF CONTROL */
sbit CT4 = 0xC9 ; /* TIMER 4 COUNTER SELECT */
sbit CPRL4 = 0xC8 ; /* TIMER 4 CAPTURE SELECT */
/* PSW 0xD0 */
sbit CY = 0xD7 ; /* CARRY FLAG */
sbit AC = 0xD6 ; /* AUXILIARY CARRY FLAG */
sbit F0 = 0xD5 ; /* USER FLAG 0 */
sbit RS1 = 0xD4 ; /* REGISTER BANK SELECT 1 */
sbit RS0 = 0xD3 ; /* REGISTER BANK SELECT 0 */
sbit OV = 0xD2 ; /* OVERFLOW FLAG */
sbit F1 = 0xD1 ; /* USER FLAG 1 */
sbit P = 0xD0 ; /* ACCUMULATOR PARITY FLAG */
/* PCA0CN 0xD8 */
sbit CF = 0xDF ; /* PCA 0 COUNTER OVERFLOW FLAG */
sbit CR = 0xDE ; /* PCA 0 COUNTER RUN CONTROL BIT */
sbit CCF5 = 0xDD ; /* PCA 0 MODULE 5 INTERRUPT FLAG */
sbit CCF4 = 0xDC ; /* PCA 0 MODULE 4 INTERRUPT FLAG */
sbit CCF3 = 0xDB ; /* PCA 0 MODULE 3 INTERRUPT FLAG */
sbit CCF2 = 0xDA ; /* PCA 0 MODULE 2 INTERRUPT FLAG */
sbit CCF1 = 0xD9 ; /* PCA 0 MODULE 1 INTERRUPT FLAG */
sbit CCF0 = 0xD8 ; /* PCA 0 MODULE 0 INTERRUPT FLAG */
/* ADC0CN 0xE8 */
sbit AD0EN = 0xEF ; /* ADC 0 ENABLE */
sbit AD0TM = 0xEE ; /* ADC 0 TRACK MODE */
sbit AD0INT = 0xED ; /* ADC 0 EOC INTERRUPT FLAG */
sbit AD0BUSY = 0xEC ; /* ADC 0 BUSY FLAG */
sbit AD0CM1 = 0xEB ; /* ADC 0 CONVERT START MODE BIT 1 */
sbit AD0CM0 = 0xEA ; /* ADC 0 CONVERT START MODE BIT 0 */
sbit AD0WINT = 0xE9 ; /* ADC 0 WINDOW INTERRUPT FLAG */
sbit AD0LJST = 0xE8 ; /* ADC 0 RIGHT JUSTIFY DATA BIT */
/* ADC2CN 0xE8 */
sbit AD2EN = 0xEF ; /* ADC 2 ENABLE */
sbit AD2TM = 0xEE ; /* ADC 2 TRACK MODE */
sbit AD2INT = 0xED ; /* ADC 2 EOC INTERRUPT FLAG */
sbit AD2BUSY = 0xEC ; /* ADC 2 BUSY FLAG */
sbit AD2CM2 = 0xEB ; /* ADC 2 CONVERT START MODE BIT 2 */
sbit AD2CM1 = 0xEA ; /* ADC 2 CONVERT START MODE BIT 1 */
sbit AD2CM0 = 0xE9 ; /* ADC 2 CONVERT START MODE BIT 0 */
sbit AD2WINT = 0xE8 ; /* ADC 2 WINDOW INTERRUPT FLAG */
/* SPI0CN 0xF8 */
sbit SPIF = 0xFF ; /* SPI 0 INTERRUPT FLAG */
sbit WCOL = 0xFE ; /* SPI 0 WRITE COLLISION FLAG */
sbit MODF = 0xFD ; /* SPI 0 MODE FAULT FLAG */
sbit RXOVRN = 0xFC ; /* SPI 0 RX OVERRUN FLAG */
sbit NSSMD1 = 0xFB ; /* SPI 0 SLAVE SELECT MODE 1 */
sbit NSSMD0 = 0xFA ; /* SPI 0 SLAVE SELECT MODE 0 */
sbit TXBMT = 0xF9 ; /* SPI 0 TX BUFFER EMPTY FLAG */
sbit SPIEN = 0xF8 ; /* SPI 0 SPI ENABLE */
/* SFR PAGE DEFINITIONS */
#define CONFIG_PAGE 0x0F /* SYSTEM AND PORT CONFIGURATION PAGE */
#define LEGACY_PAGE 0x00 /* LEGACY SFR PAGE */
#define TIMER01_PAGE 0x00 /* TIMER 0 AND TIMER 1 */
#define CPT0_PAGE 0x01 /* COMPARATOR 0 */
#define CPT1_PAGE 0x02 /* COMPARATOR 1 */
#define UART0_PAGE 0x00 /* UART 0 */
#define UART1_PAGE 0x01 /* UART 1 */
#define SPI0_PAGE 0x00 /* SPI 0 */
#define EMI0_PAGE 0x00 /* EXTERNAL MEMORY INTERFACE */
#define ADC0_PAGE 0x00 /* ADC 0 */
#define ADC2_PAGE 0x02 /* ADC 2 */
#define SMB0_PAGE 0x00 /* SMBUS 0 */
#define TMR2_PAGE 0x00 /* TIMER 2 */
#define TMR3_PAGE 0x01 /* TIMER 3 */
#define TMR4_PAGE 0x02 /* TIMER 4 */
#define DAC0_PAGE 0x00 /* DAC 0 */
#define DAC1_PAGE 0x01 /* DAC 1 */
#define PCA0_PAGE 0x00 /* PCA 0 */
#define PLL0_PAGE 0x0F /* PLL 0 */
#define MAC0_PAGE 0x03 /* MAC 0 */
Result EQU 28H
COM EQU 25H
DAT EQU 26H
CS EQU P0.7
RS EQU P0.5
SCLK EQU P0.4
SID EQU P0.3
RESET EQU P0.6
;*******LCD端口初始化说明完毕***************************
ORG 0000H
AJMP MAIN ;******入口转主程序BEGIN*************
ORG 0100H
MAIN:
LCALL Oscillator_Init;不用修改,直接用,外接晶振为12M 系统时钟4倍频
// LCALL IO_Init ;****I/O初始化***************************
// LCALL LCD_Init ;****LCD 初始化**************************
//LCALL ADC2_EXchange ;
// MOV SFRPAGE,#03H
MOV R0,#10
MOV R1,#0
MOV R2,#0
MOV R3,#0
MOV R4,#10
MOV R5,#0
MOV R6,#0
MOV R7,#0
BEGIN:
MOV A,R3 //获得运算符号;
XRL A,R7
MOV C,ACC.7
MOV F0,C
PUSH PSW
MOV SFRPAGE,#03H //低16位相乘结果送:33,32,31,30H中;
MOV MAC0STA,#0
MOV MAC0ACC1,#0
MOV MAC0ACC0,#0
MOV MAC0OVR,#0
MOV MAC0CF,#01H
MOV MAC0AH,R5
MOV MAC0AL,R4
MOV MAC0BH,R1
MOV MAC0BL,R0
NOP
MOV R5,MAC0ACC3
MOV 33H,R5
MOV R4,MAC0ACC2
MOV 32H,R4
MOV R1,MAC0ACC1
MOV 31H,R1
MOV R0,MAC0ACC0
MOV 30H,R0
MOV B,#0
MOV C,MAC0SO
MOV B.0,C
MOV MAC0CF,#01H //乘数低16位与被乘数高16位相乘,
MOV MAC0AH,R7
MOV MAC0AL,R6
MOV MAC0BH,R1
MOV MAC0BL,R0
NOP
MOV C,MAC0SO
MOV B.1,C
CLR C
MOV R7,MAC0ACC3
MOV 35H,R7
MOV R6,MAC0ACC2
MOV 34H,R6
MOV R1,MAC0ACC1
MOV R0,MAC0ACC0//结果相加;最后此次乘法结果送:35,34,33,32,31,30h中;
MOV A,R0
ADD A,32H
MOV 32H,A
MOV A,R1
ADDC A,33H
MOV 33H,A
MOV C,B.0
MOV A,34H
ADDC A ,#0
MOV 34H,A
MOV A,35H
ADDC A,#0H
MOV 35H,A
ORL C,B.1
MOV B.2,C
MOV MAC0CF,#01H //乘数高16位与被乘数低16位相乘,
MOV MAC0AH,R5
MOV MAC0AL,R4
MOV MAC0BH,R3
MOV MAC0BL,R2
NOP
NOP
MOV C,MAC0SO
MOV B.3,C
CLR C
MOV R7,MAC0ACC3
MOV R6,MAC0ACC2
MOV R1,MAC0ACC1
MOV R0,MAC0ACC0//结果相加;最后此次乘法结果送:35,34,33,32h中;
MOV A,R0
ADD A,32H
MOV 32H,A
MOV A,R1
ADDC A,33H
MOV 33H,A
MOV A,R6
ADDC A ,34H
MOV 34H,A
MOV A,R7
ADDC A,35H
MOV 35H,A
ORL C,B.3
MOV B.3,C
MOV MAC0CF,#01H //乘数高16位与被乘数高16位相乘,
MOV MAC0AH,R7
MOV MAC0AL,R6
MOV MAC0BH,R3
MOV MAC0BL,R2
NOP
NOP
MOV C,MAC0SO
MOV B.4,C
CLR C
MOV R7,MAC0ACC3
MOV R6,MAC0ACC2
MOV R1,MAC0ACC1
MOV R0,MAC0ACC0//结果相加;最后此次乘法结果送:37、36、35,34,33,32h中;
MOV A,R0
ADD A,34H
MOV 34H,A
MOV A,R1
ADDC A,35H
MOV 35H,A
MOV A,R6
ADDC A ,#00h
MOV C,B.2
ADDC A,#00H
CLR C
MOV C,B.3
ADDC A,#00H
MOV 36H,A
MOV A,R7
ADDC A,#00h
MOV 37H,A
ORL C,B.4
MOV B.4,C//结果保留在:F0、B.4、37、36、35、34、33、32、31、30H中;其中F0为符号位、B.4为溢出位
// 37h为高位,30h为低位;
;************************************************完成32*16;******************
SJMP $
/// ANL MAC0OVR,#80H
// MOV A,MAC0OVR
// ORL A,R0
// MOV R0,A
// SJMP $
;
Oscillator_Init:
MOV WDTCN,#0deh
MOV WDTCN,#0adh
MOV SFRPAGE, #CONFIG_PAGE
MOV OSCXCN, #067h
MOV R0, #030 ; Wait 1ms for initialization
Osc_Wait1:
CLR A
DJNZ ACC, $
DJNZ R0, Osc_Wait1
Osc_Wait2:
MOV A, OSCXCN
JNB ACC.7, Osc_Wait2
MOV CLKSEL, #011h
RET ;********外部晶振22.1184M,该系统的将其2分频
;*************************************************************************************************************
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -