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

📄 main.s

📁 利用ATMEL单片机的pwm功能实现DA.
💻 S
字号:
	.module main.c
	.area text(rom, con, rel)
	.dbfile D:\avrvi\democode\DA_2\source\main.c
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 20
; /************************************************************
; 文   件:main.c
; 用   途:由TC1产生两路独立的16位PWM输出,通过滤波变成电压
; Target : M16
; Crystal: 8.0000Mhz
; 说   明:PD4输出PWMB,PD5输出PWMA
; 	 	 产生的PWM波形通过滤波后转换成电压
; 		 因LM358和滤波电路本身的原因,最大电压约能到VCC的3/4
; 		 这种PWM模拟DA的方式,精度有限
; 创   建:2008.1.29
; 修   改:2008.1.29
; Copy Right  (c)  www.avrvi.com  AVR与虚拟仪器
; ************************************************************/
; 
; #include <iom16v.h>
; #include <macros.h>
; 
; //主函数
; void main(void)
;   {
	.dbline 22
; 
;   PORTD = 0x00;
	clr R2
	out 0x12,R2
	.dbline 23
;   DDRD = (1<<PD4)|(1<<PD5);    		//PWM引脚PD4,PD5设置为输出
	ldi R24,48
	out 0x11,R24
	.dbline 25
;   
;   TCCR1A = 0xA2;         			//两路PWM,匹配清零
	ldi R24,162
	out 0x2f,R24
	.dbline 26
;   TCCR1B = 0x19;         			//快速PWM模式,位数可调,预分频1
	ldi R24,25
	out 0x2e,R24
	.dbline 27
;   ICR1   = 2048;     				//计数上限值,此数为16位PWM
	ldi R24,2048
	ldi R25,8
	out 0x27,R25
	out 0x26,R24
	.dbline 29
; 
;   OCR1A=512;           				//匹配初值
	ldi R25,2
	out 0x2b,R25
	out 0x2a,R24
	.dbline 30
;   OCR1B=1484;
	ldi R24,1484
	ldi R25,5
	out 0x29,R25
	out 0x28,R24
L2:
	.dbline 38
	.dbline 39
	.dbline 40
L3:
	.dbline 37
	xjmp L2
X0:
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend

⌨️ 快捷键说明

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