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

📄 ad9851.asm

📁 采用两片凌阳61实现的建简易智能车程序
💻 ASM
字号:
.include     hardware.inc
.define      FQ_UD         0x0020                 //IOA5
.define      W_CLK         0x0040                 //IOA6
.define      RESET         0x0080                 //IOA7
.define      CONTROL       P_IOA_Data             //9851's Control
.define      SYSCLK        120000000 			  //9851's系统时钟为120M=20M x 6
.ram
.public      H_16bit,L_16bit
.var         H_16bit,L_16bit

.code
//*********************************************//
//Update9851
//*********************************************//
.public  Update9851
Update9851: .proc
         push r1,r2 to [sp]
         r1 = FQ_UD
         r2 = [CONTROL]
         r2 |= r1              //set update
         [CONTROL] = r2
         r1 = r1^0xffff
         r2 = [CONTROL]
         r2 &= r1         
         [CONTROL] = r2        //clear updata
         r1=0x0001
         [P_Watchdog_Clear]=r1
         pop r1,r2 from [sp]
          retf
         .endp
//*******************************************//
//Reset9851
//*******************************************//
.public   Reset9851
Reset9851: .proc
		 push r1,r2 to [sp]
		 r1 = RESET
         r2 = [CONTROL]         //set reset
         r2 |= r1
         [CONTROL] = r2
         r1 = r1^0xffff
         r2 = [CONTROL]         
         r2 &= r1               //clear reset
         [CONTROL] = r2
         r1 = 0x0001
         [P_Watchdog_Clear] = r1
         pop r1,r2 from [sp]
         retf
         .endp 
//******************************************//
//Init9851
//******************************************//
.public   _Init9851
_Init9851: .proc
		 push r1,r2 to [sp]
		 r1 = [P_IOA_Data]
		 r1 &= 0x001f       //clear data and control
		 [P_IOA_Data] = r1
		 
		 call  Update9851
		 call  Reset9851
		 pop r1,r2 from [sp]
		 retf
		 .endp
//******************************************//
//_WriteFreq		 
//******************************************//
.public _WriteFreq
_WriteFreq: .proc
         push bp to [sp]
         bp=sp+1
         push r1,r5 to  [sp]
         r1 = [bp + 3]                       //get first parameter,high 16 bit
         [H_16bit] = r1
         r2 = [bp + 4]                       //get second parameter,low 16 bit
         [L_16bit] = r2
         
         r1 = [P_IOA_Data]
         r1 &= 0x00ff               //send W0
         r1 |= 0x0100
         [P_IOA_Data] = r1
         r1 = W_CLK
         r2 = [CONTROL]
         r2 |= r1                  //set clock
         [CONTROL] = r2
         r1 = r1^0xffff
         r2 = [CONTROL]         
         r2 &= r1                  //clear clock
         [CONTROL] = r2
         
         r2 = [H_16bit]            //send W1
         r2 &= 0xff00
         
         r1 = [P_IOA_Data]
         r1 &= 0x00ff
         r1 |= r2
         [P_IOA_Data] = r1
         r1 = W_CLK
         r2 = [CONTROL]
         r2 |= r1                  //set clock
         [CONTROL] = r2
         r1 = r1^0xffff 
         r2 = [CONTROL]        
         r2 &= r1                  //clear clock
         [CONTROL] = r2
         
         r2 = [H_16bit]                   //send W2
         r2 = r2 lsl 4
         r2 = r2 lsl 4
         r3 = [P_IOA_Data]
         r3 &= 0x00ff
         r3 |= r2
         [P_IOA_Data] = r3
         r1 = W_CLK
         r3 = [CONTROL]
         r3 |= r1                  //set clock
         [CONTROL] = r3
         r1 = r1^0xffff 
         r3 = [CONTROL]        
         r3 &= r1                  //clear clock
         [CONTROL] = r3
         
         r2 = [L_16bit]            //send W3
         r2 &= 0xff00
         
         r1 = [P_IOA_Data]
         r1 &= 0x00ff
         r1 |= r2
         [P_IOA_Data] = r1
         r1 = W_CLK
         r2 = [CONTROL]
         r2 |= r1                  //set clock
         [CONTROL] = r2
         r1 = r1^0xffff 
         r2 = [CONTROL]        
         r2 &= r1                  //clear clock
         [CONTROL] = r2
         
         r2 = [L_16bit]                   //send W4
         r2 = r2 lsl 4
         r2 = r2 lsl 4
         r3 = [P_IOA_Data]
         r3 &= 0x00ff
         r3 |= r2
         [P_IOA_Data] = r3
         r1 = W_CLK
         r3 = [CONTROL]
         r3 |= r1                  //set clock
         [CONTROL] = r3
         r1 = r1^0xffff 
         r3 = [CONTROL]        
         r3 &= r1                  //clear clock
         [CONTROL] = r3
         
         call Update9851
         
         r1 = 0x0001
         [P_Watchdog_Clear] = r1
         
         pop r1,r5 from [sp]
		 pop bp from [sp]
		 retf
		 .endp

⌨️ 快捷键说明

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