首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

您得举手之劳 对我来说可能是一个新的开始

您得举手之劳 对我来说可能是一个新的开始

刚接触DSP两个月,想用AD输出信号调节PWM占空比,借用现成例子改成一下程序,运行无PWM波生成。想请教各位大侠,程序应怎样改?请多多指教。
(2)主程序:
.text
_c_int0
SETC INTM
CLRC SXM
CLRC OVM
CLRC CNF
LDP #0E0H
SPLK #81FEH,SCSR1
SPLK #0E8H,WDCR
LDP #0
SPLK #0003H,IMR
LACC IFR
SACL IFR
CALL ADINIT
CLRC INTM
CALL AD; 启动数模转换
CLRC INTM
CALL PWM_INIT ;初始化PWM程序
CLRC INTM
WAIT NOP
B WAIT
ADINIT LDP #234 ;设置通用定时器 4
SPLK #0H,T4CNT ;7508H DP=EAH add+1
SPLK #170CH,T4CON
SPLK #60H,T4PR
SPLK #0400H, GPTCONB
SPLK #0FFFFH,EVBIFRB
SPLK #0000H, EVBIMRB
LDP #DP_PF2
SPLK #0012H,ADCCTRL1 ;70a1h 设置ADC控制寄存器 vreflo
SPLK #8404H,ADCCTRL2
SPLK #0000H,MAXCONV ;1 通道
SPLK #0000H,CHSELSEQ1
; SPLK #7654H,CHSELSEQ2
; SPLK #0BA98H,CHSELSEQ3
; SPLK #0FEDCH,CHSELSEQ4
LAR AR1,#CMPR1
LAR AR2,#RESULT0
CLRC INTM
AD LDP #234
LACL T4CON
OR #0040H ;启动定时器4
SACL T4CON

GISR1 ;优先级INT1中断子程序入口
LDP #0E0H
LACC PIVR,1 ;读取外设中断向量寄存器(PIVR),并左移一位
ADD #PVECTORS ;加上外设中断入口地址
BACC ;跳到相应的中断服务子程序
ADCINT_ISR
CLRC SXM
MAR *,AR2
LACC *,10,AR1
SACH *+
; LACC *
; SUB #1FFH
; SACL *
CMPR 00
BCND INT_END,TC
LDP #DP_PF2
LACL ADCCTRL2
OR #4000H ;复位 SEQ1
AND #0FFDFH ;清 INT FLAG SEQ1
SACL ADCCTRL2
CLRC INTM ;开总中断,因为一进中断就自动关闭了总中断
RET
INT_END
LAR AR1,#300H
LDP #DP_PF2
LACL ADCCTRL2
OR #4000H ;复位 SEQ1
AND #0FFDFH ;清 INT FLAG SEQ1
SACL ADCCTRL2
CLRC INTM ;开总中断,因为一进中断就自动关闭了总中断
RET
PWM_INIT
LDP #225 ;指向7080h~7100h区
LACL MCRA
OR #0FC0H ;IOPA[6~7],IOPB[0~3]被配置为基本功能方式:PWM[1~6]
SACL MCRA
LDP #DP_EVA ;指向7400h~7480h区
SPLK #0FFFFH,EVAIFRA ;清EVB 全部中断标志
SPLK #0665H,ACTRA WM6,4,2 低有效,PWM5,3,1 高有效
SPLK #00H,DBTCONA
;SPLK #1EAH,CMPR1
;LAR AR1,#CMPR1
;MAR *, AR2
;LACC *,10,AR1
;SACH *+ ;设置比较初值
SPLK #300H,T1PR ;设置定时器1周期寄存器,
SPLK #0A600H,COMCONA ;使能比较操作
SPLK #000h,T1CNT
SPLK #41H,GPTCONA ;TCOMPOE=1,T1PIN=01
SPLK #080H,EVAIMRA ;通用定时器1使能
SPLK #0F4EH,T1CON ;TMODE=10 连续增计数模式,TPS=111 预分频为128
;TENABLE=1 定时器计数使能, TCLKS=00
;内部时钟
;TECMPR=1 定时器1比较使能, SELT1PR=0
CLRC INTM ;开总中断
RET
;定时器1中断程序
GISR2 ;优先级INT2中断入口
;保护现场
LDP #0E0H
LACC PIVR,1 ;读取外设中断向量寄存器(PIVR),并左移一位
ADD #PVECTORS ;加上外设中断入口地址

BACC ;跳到相应的中断服务子程序
T1GP_ISR
NOP
;通用定时器1中断入口
LDP #DP_EVA
SPLK #000,T1CNT
GISR2_RET ;中断返回
;恢复现场
CLRC INTM ;开总中断,因为一进中断就自动关闭总中断
RET
;假中断程序
PHANTOM
KICK_DOG ;复位看门狗
RET
.end
为什么没人回答?
返回列表