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

📄 f310kz4.29.asm

📁 由C8051F310单片机的 CAN控制器程序
💻 ASM
📖 第 1 页 / 共 4 页
字号:
;  FILE NAME   : C8051F310.INC
;  TARGET MCUs : C8051F310, 'F311
;  DESCRIPTION : Register/bit definitions for the C8051F31x product family.
;
;  REVISION 1.3
;     -- added ESPI0 and PSPI0
;  REVISION 1.2
;     -- added VDM0CN (0xff)   
;
;  REVISION 1.1
;     -- changed TARGET MCUs to 'F310, 'F311
;     -- SPICFG --> SPI0CFG
;     -- SPICKR --> SPI0CKR
;     -- SPIDAT --> SPI0DAT
;     -- removed CLKMUL (0xb9)
;     -- AMUX0N --> AMX0N
;     -- AMUX0P --> AMX0P
;
;---------------------------------------------------------------------------

; BYTE Registers 
          P0       DATA  080H     ; PORT 0                                                   
          SP       DATA  081H     ; STACK POINTER                                            
          DPL      DATA  082H     ; DATA POINTER - LOW BYTE                                  
          DPH      DATA  083H     ; DATA POINTER - HIGH BYTE                                 
          PCON     DATA  087H     ; POWER CONTROL                                            
          TCON     DATA  088H     ; TIMER CONTROL                                            
          TMOD     DATA  089H     ; TIMER MODE                                               
          TL0      DATA  08AH     ; TIMER 0 - LOW BYTE                                       
          TL1      DATA  08BH     ; TIMER 1 - LOW BYTE                                       
          TH0      DATA  08CH     ; TIMER 0 - HIGH BYTE                                      
          TH1      DATA  08DH     ; TIMER 1 - HIGH BYTE                                      
          CKCON    DATA  08EH     ; CLOCK CONTROL                                            
          PSCTL    DATA  08FH     ; PROGRAM STORE R/W CONTROL                                
          P1       DATA  090H     ; PORT 1                                                   
          TMR3CN   DATA  091H     ; TIMER 3 CONTROL                                          
          TMR3RLL  DATA  092H     ; TIMER 3 RELOAD LOW                                       
          TMR3RLH  DATA  093H     ; TIMER 3 RELOAD HIGH                                      
          TMR3L    DATA  094H     ; TIMER 3 LOW BYTE                                         
          TMR3H    DATA  095H     ; TIMER 3 HIGH BYTE                                        
          SCON0    DATA  098H     ; SERIAL PORT 0 CONTROL                                    
          SBUF0    DATA  099H     ; SERIAL PORT 0 BUFFER                                     
          CPT1CN   DATA  09AH     ; COMPARATOR 1 CONTROL                                     
          CPT0CN   DATA  09BH     ; COMPARATOR 0 CONTROL                                     
          CPT1MD   DATA  09CH     ; COMPARATOR 1 MODE                                        
          CPT0MD   DATA  09DH     ; COMPARATOR 0 MODE                                        
          CPT1MX   DATA  09EH     ; COMPARATOR 1 MUX                                         
          CPT0MX   DATA  09FH     ; COMPARATOR 0 MUX                                         
          P2       DATA  0A0H     ; PORT 2                                                   
          SPI0CFG  DATA  0A1H     ; SPI0 CONFIGURATION                                        
          SPI0CKR  DATA  0A2H     ; SPI0 CLOCK CONFIGURATION                                  
          SPI0DAT  DATA  0A3H     ; SPI0 DATA                                         
          P0MDOUT  DATA  0A4H     ; PORT 0 OUTPUT MODE                                       
          P1MDOUT  DATA  0A5H     ; PORT 1 OUTPUT MODE                                       
          P2MDOUT  DATA  0A6H     ; PORT 2 OUTPUT MODE                                       
          P3MDOUT  DATA  0A7H     ; PORT 3 OUTPUT MODE                                       
          IE       DATA  0A8H     ; INTERRUPT ENABLE                                         
          CLKSEL   DATA  0A9H     ; CLOCK SOURCE SELECT                                      
          EMI0CN   DATA  0AAH     ; EXTERNAL MEMORY INTERFACE CONTROL                        
          P3       DATA  0B0H     ; PORT 3                                                   
          OSCXCN   DATA  0B1H     ; EXTERNAL OSCILLATOR CONTROL                              
          OSCICN   DATA  0B2H     ; INTERNAL OSCILLATOR CONTROL                              
          OSCICL   DATA  0B3H     ; INTERNAL OSCILLATOR CALIBRATION                          
          FLACL    DATA  0B5H     ; FLASH ACCESS LIMIT
          FLSCL    DATA  0B6H     ; FLASH SCALE                                              
          FLKEY    DATA  0B7H     ; FLASH LOCK & KEY                                         
          IP       DATA  0B8H     ; INTERRUPT PRIORITY   
          AMX0N    DATA  0BAH     ; ADC0 MUX NEGATIVE CHANNEL SELECTION                      
          AMX0P    DATA  0BBH     ; ADC0 MUX POSITIVE CHANNEL SELECTION                      
          ADC0CF   DATA  0BCH     ; ADC0 CONFIGURATION                                       
          ADC0L    DATA  0BDH     ; ADC0 DATA LOW                                            
          ADC0H    DATA  0BEH     ; ADC0 DATA HIGH                                           
          SMB0CN   DATA  0C0H     ; SMBUS CONTROL                                            
          SMB0CF   DATA  0C1H     ; SMBUS CONFIGURATION                                      
          SMB0DAT  DATA  0C2H     ; SMBUS DATA                                             
          ADC0GTL  DATA  0C3H     ; ADC0 GREATER-THAN LOW                                    
          ADC0GTH  DATA  0C4H     ; ADC0 GREATER-THAN HIGH                                   
          ADC0LTL  DATA  0C5H     ; ADC0 LESS-THAN LOW                                       
          ADC0LTH  DATA  0C6H     ; ADC0 LESS-THAN HIGH                                      
          TMR2CN   DATA  0C8H     ; TIMER 2 CONTROL                                                
          TMR2RLL  DATA  0CAH     ; TIMER 2 RELOAD LOW                                       
          TMR2RLH  DATA  0CBH     ; TIMER 2 RELOAD HIGH                                      
          TMR2L    DATA  0CCH     ; TIMER 2 LOW BYTE                                         
          TMR2H    DATA  0CDH     ; TIMER 2 HIGH BYTE                                        
          PSW      DATA  0D0H     ; PROGRAM STATUS WORD                                      
          REF0CN   DATA  0D1H     ; VOLTAGE REFERENCE 0 CONTROL                              
          P0SKIP   DATA  0D4H     ; PORT 0 CROSSBAR SKIP                                     
          P1SKIP   DATA  0D5H     ; PORT 1 CROSSBAR SKIP                                     
          P2SKIP   DATA  0D6H     ; PORT 2 CROSSBAR SKIP     
          PCA0CN   DATA  0D8H     ; PCA0 CONTROL                                             
          PCA0MD   DATA  0D9H     ; PCA0 MODE                                                
          PCA0CPM0 DATA  0DAH     ; PCA0 MODULE 0 MODE                                       
          PCA0CPM1 DATA  0DBH     ; PCA0 MODULE 1 MODE                                       
          PCA0CPM2 DATA  0DCH     ; PCA0 MODULE 2 MODE     
          PCA0CPM3 DATA  0DDH     ; PCA0 MODULE 3 MODE                                       
          PCA0CPM4 DATA  0DEH     ; PCA0 MODULE 4 MODE                                    
          ACC      DATA  0E0H     ; ACCUMULATOR                                              
          XBR0     DATA  0E1H     ; DIGITAL CROSSBAR CONFIGURATION REGISTER 0                
          XBR1     DATA  0E2H     ; DIGITAL CROSSBAR CONFIGURATION REGISTER 1                
          IT01CF   DATA  0E4H     ; INT0/INT1 CONFIGURATION                                  
          EIE1     DATA  0E6H     ; EXTERNAL INTERRUPT ENABLE 1                     
          ADC0CN   DATA  0E8H     ; ADC 0 CONTROL                                            
          PCA0CPL1 DATA  0E9H     ; PCA0 MODULE 1 CAPTURE/COMPARE REGISTER LOW BYTE          
          PCA0CPH1 DATA  0EAH     ; PCA0 MODULE 1 CAPTURE/COMPARE REGISTER HIGH BYTE         
          PCA0CPL2 DATA  0EBH     ; PCA0 MODULE 2 CAPTURE/COMPARE REGISTER LOW BYTE          
          PCA0CPH2 DATA  0ECH     ; PCA0 MODULE 2 CAPTURE/COMPARE REGISTER HIGH BYTE         
          PCA0CPL3 DATA  0EDH     ; PCA0 MODULE 3 CAPTURE/COMPARE REGISTER LOW BYTE          
          PCA0CPH3 DATA  0EEH     ; PCA0 MODULE 3 CAPTURE/COMPARE REGISTER HIGH BYTE         
          RSTSRC   DATA  0EFH     ; RESET SOURCE                                             
          B        DATA  0F0H     ; B REGISTER                                               
          P0MDIN   DATA  0F1H     ; PORT 0 INPUT MODE REGISTER                               
          P1MDIN   DATA  0F2H     ; PORT 1 INPUT MODE REGISTER                               
          P2MDIN   DATA  0F3H     ; PORT 2 INPUT MODE REGISTER                               
          P3MDIN   DATA  0F4H     ; PORT 3 INPUT MODE REGISTER                               
          EIP1     DATA  0F6H     ; EXTERNAL INTERRUPT PRIORITY 1
          SPI0CN   DATA  0F8H     ; SPI0 CONTROL                                             
          PCA0L    DATA  0F9H     ; PCA0 COUNTER REGISTER LOW BYTE                           
          PCA0H    DATA  0FAH     ; PCA0 COUNTER REGISTER HIGH BYTE                          
          PCA0CPL0 DATA  0FBH     ; PCA MODULE 0 CAPTURE/COMPARE REGISTER LOW BYTE           
          PCA0CPH0 DATA  0FCH     ; PCA MODULE 0 CAPTURE/COMPARE REGISTER HIGH BYTE          
          PCA0CPL4 DATA  0FDH     ; PCA MODULE 4 CAPTURE/COMPARE REGISTER LOW BYTE           
          PCA0CPH4 DATA  0FEH     ; PCA MODULE 4 CAPTURE/COMPARE REGISTER HIGH BYTE      
          VDM0CN   DATA  0FFH ; VDD MONITOR CONTROL

;------------------------------------------------------------------------------
;BIT DEFINITIONS
;
; TCON 88H
          IT0      BIT   TCON.0   ; EXT. INTERRUPT 0 TYPE
          IE0      BIT   TCON.1   ; EXT. INTERRUPT 0 EDGE FLAG
          IT1      BIT   TCON.2   ; EXT. INTERRUPT 1 TYPE
          IE1      BIT   TCON.3   ; EXT. INTERRUPT 1 EDGE FLAG
          TR0      BIT   TCON.4   ; TIMER 0 ON/OFF CONTROL
          TF0      BIT   TCON.5   ; TIMER 0 OVERFLOW FLAG
          TR1      BIT   TCON.6   ; TIMER 1 ON/OFF CONTROL
          TF1      BIT   TCON.7   ; TIMER 1 OVERFLOW FLAG

; SCON0  0x98 
          RI0      BIT   SCON0.0  ; RECEIVE INTERRUPT FLAG                                
          TI0      BIT   SCON0.1  ; TRANSMIT INTERRUPT FLAG                               
          RB80     BIT   SCON0.2  ; RECEIVE BIT 8                                         
          TB80     BIT   SCON0.3  ; TRANSMIT BIT 8                                        
          REN0     BIT   SCON0.4  ; RECEIVE ENABLE                                        
          MCE0     BIT   SCON0.5  ; MULTIPROCESSOR COMMUNICATION ENABLE                   
          S0MODE   BIT   SCON0.7  ; SERIAL MODE CONTROL BIT 0                             

; IE  0xA8 
          EX0      BIT   IE.0     ; EXTERNAL INTERRUPT 0 ENABLE                           
          ET0      BIT   IE.1     ; TIMER 0 INTERRUPT ENABLE                              
          EX1      BIT   IE.2     ; EXTERNAL INTERRUPT 1 ENABLE                           
          ET1      BIT   IE.3     ; TIMER 1 INTERRUPT ENABLE                              
          ES0      BIT   IE.4     ; UART0 INTERRUPT ENABLE                                
          ET2      BIT   IE.5     ; TIMER 2 INTERRUPT ENABLE                              
          ESPI0    BIT   IE.6     ; SPI0 INTERRUPT ENABLE
          EA       BIT   IE.7     ; GLOBAL INTERRUPT ENABLE                               

; IP  0xB8 
          PX0      BIT   IP.0     ; EXTERNAL INTERRUPT 0 PRIORITY                         
          PT0      BIT   IP.1     ; TIMER 0 PRIORITY                                      
          PX1      BIT   IP.2     ; EXTERNAL INTERRUPT 1 PRIORITY                         
          PT1      BIT   IP.3     ; TIMER 1 PRIORITY                                      
          PS0      BIT   IP.4     ; UART0 PRIORITY                                        
          PT2      BIT   IP.5     ; TIMER 2 PRIORITY                                      
          PSPI0    BIT   IP.6     ; SPI0 INTERRUPT PRIORITY

; SMB0CN 0xC0 
          SI       BIT   SMB0CN.0 ; SMBUS0 INTERRUPT FLAG                                 
          AA      BIT   SMB0CN.1 ; ACKNOWLEDGE FLAG                                      
          ARBLOST  BIT   SMB0CN.2 ; ARBITRATION LOST INDICATOR                            
          ACKRQ    BIT   SMB0CN.3 ; ACKNOWLEDGE REQUEST                                   
          STO      BIT   SMB0CN.4 ; STOP FLAG                                             
          STA      BIT   SMB0CN.5 ; START FLAG                                            
          TXMODE   BIT   SMB0CN.6 ; TRANSMIT MODE INDICATOR                               
          MASTER   BIT   SMB0CN.7 ; MASTER/SLAVE INDICATOR                                

; TMR2CN 0xC8 
          T2XCLK   BIT   TMR2CN.0 ; TIMER 2 EXTERNAL CLOCK SELECT                         
          TR2      BIT   TMR2CN.2 ; TIMER 2 ON/OFF CONTROL                                
          T2SPLIT  BIT   TMR2CN.3 ; TIMER 2 SPLIT MODE ENABLE                             
          TF2LEN   BIT   TMR2CN.5 ; TIMER 2 LOW BYTE INTERRUPT ENABLE                     
          TF2L     BIT   TMR2CN.6 ; TIMER 2 LOW BYTE OVERFLOW FLAG                        
          TF2H     BIT   TMR2CN.7 ; TIMER 2 HIGH BYTE OVERFLOW FLAG                       

; PSW 0xD0 
          P        BIT   PSW.0    ; ACCUMULATOR PARITY FLAG                               
          F1       BIT   PSW.1    ; USER FLAG 1                                           
          OV       BIT   PSW.2    ; OVERFLOW FLAG                                         
          RS0      BIT   PSW.3    ; REGISTER BANK SELECT 0                                
          RS1      BIT   PSW.4    ; REGISTER BANK SELECT 1                                
          F0       BIT   PSW.5    ; USER FLAG 0                                           
          AC       BIT   PSW.6    ; AUXILIARY CARRY FLAG                                  
          CY       BIT   PSW.7    ; CARRY FLAG                                            

; PCA0CN 0xD8H 
          CCF0     BIT   PCA0CN.0 ; PCA0 MODULE 0 CAPTURE/COMPARE FLAG                    
          CCF1     BIT   PCA0CN.1 ; PCA0 MODULE 1 CAPTURE/COMPARE FLAG                    
          CCF2     BIT   PCA0CN.2 ; PCA0 MODULE 2 CAPTURE/COMPARE FLAG                    
          CCF3     BIT   PCA0CN.3 ; PCA0 MODULE 3 CAPTURE/COMPARE FLAG                    
          CCF4     BIT   PCA0CN.4 ; PCA0 MODULE 4 CAPTURE/COMPARE FLAG                    
          CR       BIT   PCA0CN.6 ; PCA0 COUNTER RUN CONTROL                              
          CF       BIT   PCA0CN.7 ; PCA0 COUNTER OVERFLOW FLAG                            

; ADC0CN 0xE8H 
          AD0CM0   BIT   ADC0CN.0 ; ADC0 CONVERSION MODE SELECT 0                         
          AD0CM1   BIT   ADC0CN.1 ; ADC0 CONVERSION MODE SELECT 1                         
          AD0CM2   BIT   ADC0CN.2 ; ADC0 CONVERSION MODE SELECT 2                         
          AD0WINT  BIT   ADC0CN.3 ; ADC0 WINDOW COMPARE INTERRUPT FLAG                    
          AD0BUSY  BIT   ADC0CN.4 ; ADC0 BUSY FLAG                                        
          AD0INT   BIT   ADC0CN.5 ; ADC0 CONVERISION COMPLETE INTERRUPT FLAG              
          AD0TM    BIT   ADC0CN.6 ; ADC0 TRACK MODE                                       
          AD0EN    BIT   ADC0CN.7 ; ADC0 ENABLE                                           

; SPI0CN 0xF8H 
          SPIF     BIT   SPI0CN.7 ; SPI 0 INTERRUPT FLAG                                  
          WCOL     BIT   SPI0CN.6 ; SPI 0 WRITE COLLISION FLAG                            
          MODF     BIT   SPI0CN.5 ; SPI 0 MODE FAULT FLAG                                 
          RXOVRN   BIT   SPI0CN.4 ; SPI 0 RX OVERRUN FLAG                                 
          TXBSY    BIT   SPI0CN.3 ; SPI 0 SLAVE SELECT MODE 1                             
          SLVSEL   BIT   SPI0CN.2 ; SPI 0 SLAVE SELECT MODE 0                             
          TXBMT    BIT   SPI0CN.1 ; SPI 0 TRANSMIT BUFFER EMPTY                           
          SPIEN    BIT   SPI0CN.0 ; SPI 0 SPI ENABLE 
          
          ;堆栈区:    50H --- 7FH
					;用户RAM区
					;显示区
					WRITE        EQU      00h  ;写命令       
          READ         EQU      01h  ;读命令     
					ORG          00H
					SM_BUSY      BIT      1;    忙标志
          RW           BIT      1;    R/W标志
					BYTE_SENT    BIT      1;指示刚发送的字节
					UART_TEST    BIT      1
					UART0_TR     BIT      1
					ORG          10H
				
					AL          EQU      20H
					AH          EQU      21H
					BL          EQU      22H
					BH          EQU      23H
					CL          EQU      24H
					CH          EQU      25H
          DL          EQU      26H
					DH          EQU      27H
					EL          EQU      28H
					EH          EQU      29H
          ORG          20H
					CAN_TEST    EQU      2AH   ;测试成功标志
					CAN_START   EQU      2BH   ;发送区准备好标志
          STUART:      DS       1
					 
					num         EQU      39H
					;DATA
					Iin         EQU      30H    ;输入电流  
					Iout        EQU      31H    ;输出电流
					Uin0        EQU      32H   ;输入电压
          Uin1        EQU      33H   ;输入电压
					Uout        EQU      34H    ;输出电压
				  CT          EQU      35H   ;充电机散热器温度
          SYS_STUART0 EQU      36H
          SYS_STUART1 EQU      37H
					GD_STUART   EQU      38H
          GDI         EQU      39H    ;给定电压
					GDV         EQU      3AH    ;给定电流
          RST_DATA    EQU      3BH     


          ;SMBUS
					SLA_ADD        EQU      47H    ;保存从地址          
          WRI_ADD        EQU      48H   ;保存从地址+写命令     
          READ_ADD       EQU      49H    ;保存从地址+读命令     
          TRANSMIT_BYTE  EQU      4AH    ;保存待发送的字节          
          RECEIVE_BYTE   EQU      4BH    ;保存刚收到的字节
				  TEST_COUNT     EQU      4CH
          TEST_BYTE      EQU      4DH
          TEST_ADDR      EQU      4EH
          RECEIVE_ADD    EQU      4FH   ;收到的字节目标首址
				           
	        ;CAN接收缓冲区80~8fh
					;can发送数据缓冲区90~9FH
          can0_d0      equ      80h
					can0_d1      equ      81h
					can0_d2      equ      82h
					can0_d3      equ      83h
					can0_d4      equ      84h
          can0_d5      equ      85h
					can0_d6      equ      86h
					can0_d7      equ      87h
					can_ress     equ      88h
					can1_d0      equ      89h
					can1_d1      equ      8Ah
					can1_d2      equ      8Bh
					can1_d3      equ      8Ch
					can1_d4      equ      8Dh
          can1_d5      equ      8Eh
					can1_d6      equ      8Fh
					can1_d7      equ      90h
					;***************************

					can_rd       equ      03h
					can_wr       equ      02h
					can_rts0     equ      081h
					can_rts1     equ      082h
					can_rts2     equ      084h
					can_rst      equ      0c0h
					can_stat     equ      0a0h
				  
					    
          
          
          


       
					;ORG         1000H
				;	BELAY:     
				;	DB         0  1  2  3  4  5  6  7  8  9  10
				;	DB         11 12 13 14 15 16 17 18 19 20
					
				          
					;************************************
					;|0 |待机           |
					;|1 |输入过压       |
					;|2 |输入欠压       |
					;|3 |输出过压       |
          ;|4 |输出欠压       |
					;|5 |输入过流       |
					;|6 |输出过流       |
					;|7 |输出过载       |
          ;|8 |IPM保护        |
					;|9 |充电机过热     |
					;|0A|电池故障       |
					;|0B|运行指示       |
          ;|0C|输出电流显示   |;0
					;|0D|输入电流显示   |;1
					;|0E|输出电压显示   |;2
					;|0F|输入电压显示   |;3
          ;|10|电池温度显示   |;4
					;|11|充电机温度显示 |;5
					;|12|电流给定设置   |;6
					;|13|电压给定设置   |;7
          ;|14|故障代码指示   |;8
					;|15|年份设定       |;9
					;|16|月份设定       |;A
					;|17|日期设定       |;B
          ;|18|小时设定       |;C
					;|19|分钟设定       |;D
					

         ;DIS_DPTD:
				 ;DB  0A0H 0A1H 0A2H 0A3H 0A4H 0A5H 0A6H 0A7H 0A8H 0A9H 0AAH 0ABH 0ACH 0ADH 0AEH 
				; DIS_RE_BELAY:
				;	DB         0A0H 0F9H 0C4H 0E0H  099H        ;0  1  2  3  4    
				;	DB         092H 82H  F8H  80H   90H  83H  8CH    ;5  6  7  8  9  B  P  ;
        ; DIS_RESS_BELAY:
				;	DB         88H  08H  0A1H  21H  89H    ; A  A. U  U. H   ;0BH 0CH 0DH 0EH 0FH 10H
				;	DB         09H  84H  04H  86H   06H  43H    ;H. G  G. E  E. R.  ;11H 12H 13H 14H 15H 16H
				;	DB         41H  28H  27H                    ;D. N. L.           ;17H 18H 19H
          ;***********************************************
					;中断向量程序
					;***********************************************
           ORG       00h
           LJMP      FREST_ISR    ;系统复位中断 ;

           ORG       13H
					 LJMP     CAN_ISR   ;外部中断0    ;用来作为CAN通讯的标准中断输入口
           RETI
           ;ORG       0BH
					 ;LCALL     T0_OVER_ISR    ;T0溢出 
					        
					 ;ORG       1BH
					 ;RETI    ;T1溢出

					 ORG       23H
					 LJMP     UART0_INT0_ISR  ;UART接收和发送中断;
					 RETI

					 ORG       2BH
					 LJMP      T2OVER_ISR    ;T2溢出

					 ;ORG       33H
					 ;LCALL     SPI_INT   ;SPI接收和发送中断;

					 ORG       3BH
					 LJMP     SMBus_ISR   ;SMB接收和发送中断;
           RETI
					 
           ORG       73H
					 ;定时器3溢出中断;;在该处对SMB复位
           MOV     SMB0CN,#00H     ;
					 MOV     SMB0CF,#10011101B
					 RETI	
					 ;*************************************************
					 ;ORG       4BH
					 ;LJMP      CMADC     ;ADC窗口比较中断
					 ;ORG       53H
					 ;LJMP      ADC0CN    ;ADC转换结束中断
					 ;ORG       5BH

⌨️ 快捷键说明

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