微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > Atmega16在开关磁阻电机调速系统中的应用

Atmega16在开关磁阻电机调速系统中的应用

时间:06-08 来源:互联网 点击:
5 软件示例

5.1 相输出子程序示例

;正转相输出
.def xiin=r16 ;相输入信号寄存器
;====================
xinoutz:in xiin,pind ;将相输入信号送给寄存器
andi xiin,$03 ;相与只剩下相信号
cpi xiin,$01 ;是否da输出
brbc 1,daout ;相等,da输出
cpi xiin,$03 ;是否ab输出
brbc 1,about ;相等,ab输出
cpi xiin,$02 ;是否bc输出
brbc 1,bcout ;相等,bc输出
cpi xiin,$00 ;是否cd输出
brbc 1,cdout ;相等,cd输出
;====================
;反转相输出
;====================
xinoutf:in xiin,pind ;将相输入信号送给寄存器
andi xiin,$00 ;相与只剩下相信号
cpi xiin,$01 ;是否da输出
brbc 1,daout ;相等,da输出
cpi xiin,$02 ;是否ab输出
brbc 1,about ;相等,ab输出
cpi xiin,$03 ;是否bc输出
brbc 1,bcout ;相等,bc输出
cpi xiin,$01 ;是否cd输出
brbc 1,cdout ;相等,cd输出
;====================
daout:sbic pinb,4 ;开通a相低电平有效
sbic pinb,7 ;开通d相?
sbis pinb,5
sbis pinb,6
ret
about:sbic pinb,4 ;开通a相
sbic pinb,6 ;开通b相
sbis pinb,5
sbis pinb,7
ret
bcout:sbic pinb,5 ;开通c相
sbic pinb,6 ;开通b相?
sbis pinb,7
sbis pinb,4
ret
cdout:sbic pinb,5 ;开通c相
sbis pinb,7 ;开通d相?
sbis pinb,4
sbis pinb,6
ret

5.2 速度采集显示子程序示例

.include "m16def.inc"
.org $001c
rjmp adcint
.def channel=r29 ;模拟通道号
.def lresult=r2 ;转换低字节
.def hresult=r3 ;转换高字节
.def temp=r16
.equ sample=$0060 ;采样数据1缓冲区首地址
.equ sample2=$0063 ;采样数据2缓冲区首地址
.def round=r17 ;显示回合计数器
.def outer=r19 ;存放外环计数器
.def inner=r18 ;存放内环计数器
.equ slabel=$0400 ;字符码首地址
.def hxian=r2 ;存放预显示高字节
.def lxian=r1 ;存放预显示低字节
;采集显示速度占用系统资源r1r2s3r4r16,$60~$69
adcin:ldi channel,$04 ;从4通道开始
out admux,channel
ldi r16,$ee ;自由运行方式
out adcsr,r16 ;启动转换
clr xh ;建立sram指针
ldi x1,$60
inc channel ;通道号增1
out admux,channel ;选通道4
sbi adcsr,3 ;开启ad中断
ldi r28,$03 ;转换次数
adhere:rjmp adhere ;等待中断
adcint:in lresult,adcl ;读转换结果
in hresult,adch
st x+,lresult
dec r28
brne adnextc
rjmp adret
adnextc:ldi r28,$03 ;转换次数
inc channel ;通道号加1
out admux,channel ;选下一个通道
cpi x1,$70 ;转换的是通道7吗
brme adret ;否,返回
cbi ADCSR,7 ;是,停止转换
adret:reti

6 结束语

实际使用证明:Atmel公司出品的Atmega16系列单片机具有处理速度快,内部外设功能模块丰富等优点,是一种性价比较高的单片机,特别适用于电池供电、便携式以及电机驱动等系统。本文的开关磁阻电机充分利用了该单片机丰富的内部外设模块,因而简化了外围电路,大大提高了性价比。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top