找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4553|回復(fù): 4
收起左側(cè)

數(shù)字PWM功能--Proteus 仿真

[復(fù)制鏈接]
ID:342822 發(fā)表于 2019-11-10 13:50 | 顯示全部樓層 |閱讀模式
rem 《AVR單片機(jī)basIc語言編程及開發(fā)》數(shù)字PWM功能------Proteus 仿真
rem Created:   周六 11月 2 2019   taotie

rem Processor: ATmega8
rem Compiler:  BASCOM-AVR
rem Write your code here

$regfile = "m8def.dat"
$crystal = 8000000
$baud = 9600
dim e as Word, f as Word     '比較值變量
config TIMER1=PWM,PWM=10, compare a PWM = clear up,  compare b PWM=   clear down, prescale=8
   '配置t/c1作pwm。pwm分辨率為10 位長(zhǎng)度 。pwm1a和pwm1b分別作正向清零和反向清零。計(jì)數(shù)器預(yù)分頻8
   DDRB=&B00000110                                              'PB1,PB2為輸出
   CONFIG  INT0=rising                                      ' 配置外部中斷INT0,INT1中斷時(shí)分別對(duì)比較值作加減計(jì)算
   CONFIG  INT1=rising                                      'Low Level低   rising 上   falling下
   ON  INT0  ISR0                                                     '中斷發(fā)生時(shí)子程序標(biāo)號(hào)
   ON  INT1  ISR1
   ENABLE  INT0                                                      '開放中斷
   ENABLE  INT1
   ENABLE   INTERRUPTS                                     '開放全局中斷
EERO:
   INPUT "輸入大于0,小于1023的PWM1A值E : ",E                            '鍵盤輸入比較值E
   if e>1022 THEN  GOTO  EERO
   FERO:
    INPUT "輸入大于0,小于1023的PWM1B值F : " ,F                           '鍵盤輸入比較值F
   if f>1022 THEN  GOTO  FERO
   PWM1A=E                                                         'PWM比較寄存器置入初值E,F
   PWM1B=F
   START  TIMER1                                                 '啟動(dòng)TIMER1
   DO
   IDLE                                                                  '     空閑方式睡眠狀態(tài)
   LOOP
   END
ISR0:                                                               '  int0中斷發(fā)生時(shí)子程序
   IF E<1023 THEN  E=E+20                              '    E,F加一,更改比較寄存器值
   IF E>1022 THEN  E=1022
   IF F<1023 THEN  F=F+20
   IF F >1022 THEN  F =1022
    PWM1A=E
    PWM1B=F
   PRINT   "向上輸出E值";E
   PRINT   "向上輸出F值";F
    RETURN
ISR1:                                                                        '  int1中斷發(fā)生時(shí)子程序
    IF E>20 THEN  E=E-20                                           'E,F減一,更改比較寄存器值
    IF E< 0 THEN  E=1
    IF F>20 THEN  F=F-20
    IF F< 0 THEN  F=1
    PWM1A=E
    PWM1B=F
    PRINT   "向下輸出E值";E
    PRINT   "向下輸出F值";F
    RETURN

捕獲pwm.PNG




回復(fù)

使用道具 舉報(bào)

ID:328014 發(fā)表于 2019-11-10 23:13 | 顯示全部樓層
好東東啊 能分享下工程文件學(xué)習(xí)下嗎?
回復(fù)

使用道具 舉報(bào)

ID:342822 發(fā)表于 2019-11-11 13:24 | 顯示全部樓層
如果沒有安裝Proteus 8 .8給你工程文件也沒用,F(xiàn)在有源代碼和仿真圖不是很好嗎!
回復(fù)

使用道具 舉報(bào)

ID:342822 發(fā)表于 2019-11-11 14:13 | 顯示全部樓層
擴(kuò)展一下,PWM驅(qū)動(dòng)大功率IGBT管點(diǎn)亮36V100W燈泡并控制亮度。
89.PNG

回復(fù)

使用道具 舉報(bào)

ID:486426 發(fā)表于 2019-11-20 16:46 | 顯示全部樓層
還沒有入門,謝謝分享!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表