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

📄 mk7a21p capture.asm

📁 这是如何使用芯片的TMR1的捕捉功能的事例和程序
💻 ASM
字号:
#include  "mk7a21p.inc"  ;编译该文档需包含"mk7a21p.inc"文件
;-------------------------------------------------------------------- 
;芯片型号(mk7a21p) 
;-------------------------------------------------------------------- 
;配置寄存器设置说明(CONFIG) 
;1-----------FOSC=INRC&NS  ;LS,NS,HS,RC,INRC(单时钟) 
       ;INRC&LS,INRC&NS,INRC&HS   
;2-----------CPT=OFF    ;ON,OFF    
;3-----------WDTE=Disable   ;Enable,Disable 
;4-----------LV=2.3V    ;4V,2.3V,Don't use 
;5-----------RST_DEF=...input...  ;...input...,...reset... 
;6-----------EXT_CLK=...timer sourse... ;...IO...,...timer sourse... 
;--------------------------------------------------------------------- 
a_buf   	equ   		0x40 
status_buf  	equ   		0x41 
dat_0           equ             0x42 
dat_1           equ             0x43 
;--------------------------------------------------------------------- 
          	org      	0x000  		;mk7a21p的复位向量地址定义 
          	lgoto     	main   		;跳转到主程序入口 
          	org      	0x004  		;mk7a21p的中断向量地址定义 
          	lgoto     	int   		;跳转到中断程序入口 
;---------------------------------------------------------------------
  		org  		0x010 
int 
  		movam 		a_buf 
  		swap  		status,a 
  		movam 		status_buf  	;保护现场 
  		;------------------------------------------------------------------- 
  		btsc  		irqf,tm1f 
  		lgoto  		int_tm1  	;进入TM1有关的中断服务程序 
  		btsc  		irqf,tm2f 
  		lgoto  		int_tm2  	;进入TM2有关的中断服务程序 
  		btsc  		irqf,tm3f 
  		lgoto  		int_tm3  	;进入TM3有关的中断服务程序 
  		btsc  		irqf,paf 
  		lgoto  		int_pa  	;进入PortA中断服务程序 
  		btsc  		irqf,adcf 
  		lgoto  		int_adc  	;进入AD转换中断服务程序 
  		;------------------------------------------------------------------- 
int_end 
  		swap  		status_buf,a 
  		movam 		status   
  		swap  		a_buf,m 
  		swap  		a_buf,a  	;恢复现场 
  		reti 
;--------------------------------------------------------------------- 
int_tm1 
  		bc  		irqf,tm1f 
  		;------------------------------------------------------------------- 
  		;TM1中断服务程序 
  		com      	tm1l_la,a 
  		movam    	dat_0 
  		com      	tm1h_la,a 
  		movam    	dat_1 
  		lcall      	display 
  		lgoto  		int_end 
;--------------------------------------------------------------------- 
int_tm2 
  		bc  		irqf,tm2f 
  		;------------------------------------------------------------------- 
  		;TM2中断服务程序 
  		;------------------------------------------------------------------- 
  		lgoto  		int_end 
;--------------------------------------------------------------------- 
int_tm3 
  		bc  		irqf,tm2f 
  		;------------------------------------------------------------------- 
  		;TM2中断服务程序 
  		;------------------------------------------------------------------- 
  		lgoto  		int_end  
;---------------------------------------------------------------------
int_pa 
  		bc  		irqf,paf 
  		;-------------------------------------------------------------------
  		;PortA中断服务程序 
  		;-------------------------------------------------------------------
  		lgoto  		int_end  
;-----------------------------------------------------------------------------------
int_adc 
  		bc  		irqf,adcf 
  		;-------------------------------------------------------------------
  		;adc中断服务程序 
  		;-------------------------------------------------------------------
  		lgoto  		int_end 
;----------------------------------------------------------------------------------- 
main                                                                                        
                movla  		b'00000000'  
                movam  		sys_ctl  	;单时钟模式时此设置无效 
                      				;双时钟模式时:Bit7---系统时钟选择 
                      				;双时钟模式时:Bit1---内部RC振荡控制 
                      				;双时钟模式时:Bit0---外部振荡控制 
                ;-------------------------------------------------------------------
                movla  		b'10000011'  
                movam  		wdt_ctl  	;WDT的使能及其预分频为1:8          
                ;------------------------------------------------------------------- 
                movla  		b'00010000' 
                movam  		pa_dir   	;PA4输入 
                movla  		b'00000000' 
                movam  		pa_dat  	;PA0-7状态 
                movla  		b'00000000' 
                movam  		pa_plu   	;PA0-7上拉禁止 
                movla  		b'00000000' 
                movam  		pa_inte   	;PA0-7唤醒禁止(外部中断禁止)
                ;-------------------------------------------------------------------
                movla  		b'11110000' 
                movam  		pb_dir   	;PB0-3输出 
                movla  		b'11110000' 
                movam  		pb_dat  	;PB0-3状态 
                movla  		b'11110000' 
                movam  		pb_plu   	;PB0-3上拉禁止 
                ;------------------------------------------------------------------- 
                movla  		b'11110000' 
                movam  		pc_dir     	;PC0,2,3输出,PC1只能作为输入 
                movla  		b'11110000' 
                movam  		pc_dat    	;PC0-3状态 
                movla  		b'11110000' 
                movam  		pc_plu     	;PC0-3上拉禁止 
                ;-------------------------------------------------------------------- 
                movla     	b'00110000'  	;以下为TMR1的初始化程序段 
                movam           tm1_ctl1       	;TM1用作捕捉模式,预分频1:1 
                movla      	b'00000000' 
                movam           tm1_ctl2   	;Bit7:比较计数器自动清零使能 
                ;----------------------- 
                mov           	clr_cnt,m   	;写这个寄存器将清零比较计数器 
                ;----------------------- 
                ;movla      	0x50 
                ;movam       	tm1l_la 
                ;movla        	0xc3 
                ;movam        	tm1h_la 
                ;--------------------------------------------------------------------- 
                movla        	b'01100010'  	;以下为TMR2的初始化程序段 
                movam           tm2_ctl1 
                movla         	b'11000000' 
                movam           tm2_ctl2   	;Bit7:模式选择/Bit6:PWM初始状态 
                       				;Bit5:IO或TO_E/Bit3-0:PWM预分频 
                movla      	.200 
                movam           tm2_la 
                ;--------------------------------------------------------------------- 
                movla        	b'01100010' 	;以下为TMR3的初始化程序段 
                movam           tm3_ctl
                movla       	.100 
                movam           tm3_la 
                ;--------------------------------------------------------------------- 
                movla   	b'00000000' 	;以下是ADC的初始化设置 
                movla   	ad_ctl1  	;Bit7:adc使能/Bit5:模式/Bit1-0通道选择 
                movla        	b'00000000' 
                movla   	ad_ctl2  	;Bit7:比较结果/Bit1-0:adc时钟源 
                movla       	b'00000000' 
                movla   	ad_ctl3  	;Bit3-0:PB0-3复用管脚的选择 
                movla        	.0 
                movla   	ad_dat   
                ;--------------------------------------------------------------------- 
                movla       	b'10000010' 	;以下是中断设置 
                movam           irqm   		;Bit1:TM1/Bit2:TM2/Bit3:TM3 
                       				;Bit4:PA/Bit6:ADC/Bit7:中断总使能Bit 
                clr              irqf 
                ;--------------------------------------------------------------------- 
                bs       	tm1_ctl1,7 
                bs              tm2_ctl1,7 
                ;bs        	tm3_ctl1,7 
                nop 
                lgoto     	$ 
;------------------------------------------------------------------------------------- 
display 
                mov        	dat_0,a 
                andla     	b'00001111' 
                movam      	pb_dat 
                ;---------------------------------------------------------------------
                rr       	dat_0,m 
                rr        	dat_0,m 
                rr         	dat_0,m 
                rr         	dat_0,m 
                mov             dat_0,a 
                andla       	b'00001111' 
                movam           pa_dat 
                ;--------------------------------------------------------------------- 
                btsc            dat_1,0 
                bs              pa_dat,5 
                btss            dat_1,0 
                bc              pa_dat,5 
                ;--------------------------------------------------------------------- 
                btsc            dat_1,1 
                bs              pa_dat,6 
                btss            dat_1,1 
                bc              pa_dat,6 
                ;--------------------------------------------------------------------- 
                btsc            dat_1,2 
                bs              pa_dat,7 
                btss            dat_1,2 
                bc              pa_dat,7 
                ;--------------------------------------------------------------------- 
                btsc            dat_1,3 
                bs              pc_dat,3 
                btss            dat_1,3 
                bc              pc_dat,3 
                ;--------------------------------------------------------------------- 
                btsc            dat_1,4 
                bs              pc_dat,2 
                btss            dat_1,4 
                bc              pc_dat,2 
     		ret 
;------------------------------------------------------------------------------------- 
                end 

⌨️ 快捷键说明

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