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

📄 main.lis

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

⌨️ 快捷键说明

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