找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4459|回復: 4
打印 上一主題 下一主題
收起左側

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

[復制鏈接]
跳轉到指定樓層
樓主
ID:342822 發(fā)表于 2019-11-10 13:50 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
rem 《AVR單片機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 位長度 。pwm1a和pwm1b分別作正向清零和反向清零。計數(shù)器預分頻8
   DDRB=&B00000110                                              'PB1,PB2為輸出
   CONFIG  INT0=rising                                      ' 配置外部中斷INT0,INT1中斷時分別對比較值作加減計算
   CONFIG  INT1=rising                                      'Low Level低   rising 上   falling下
   ON  INT0  ISR0                                                     '中斷發(fā)生時子程序標號
   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                                                 '啟動TIMER1
   DO
   IDLE                                                                  '     空閑方式睡眠狀態(tài)
   LOOP
   END
ISR0:                                                               '  int0中斷發(fā)生時子程序
   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ā)生時子程序
    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






分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:328014 發(fā)表于 2019-11-10 23:13 | 只看該作者
好東東啊 能分享下工程文件學習下嗎?
回復

使用道具 舉報

板凳
ID:342822 發(fā)表于 2019-11-11 13:24 | 只看該作者
如果沒有安裝Proteus 8 .8給你工程文件也沒用。現(xiàn)在有源代碼和仿真圖不是很好嗎!
回復

使用道具 舉報

地板
ID:342822 發(fā)表于 2019-11-11 14:13 | 只看該作者
擴展一下,PWM驅動大功率IGBT管點亮36V100W燈泡并控制亮度。


回復

使用道具 舉報

5#
ID:486426 發(fā)表于 2019-11-20 16:46 | 只看該作者
還沒有入門,謝謝分享!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

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

快速回復 返回頂部 返回列表