久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

我寫的 x51 pwm 程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:66535 發表于 2014-9-23 12:31 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

;*************************************************************************************************************************

;專案名稱:PWM模塊 for 89S51

;制令編號:N/A

;程序檔案:x51PWM08(100Hz).ASM

;版    本:V1.00.0

;設計者  : Richard

;修改紀錄: 周期=10mSec/ 頻率= 100Hz

;2012/06/21: 已完成軟件仿真,由T修改周期;P1Port修改PW(脈沖寬度),請留意T的修改會影響PW的執行狀況(T>PW)

;*************************************************************************************************************************

PW           equ   3                      ;PW脈波ON時間設定(R3)

T              equ   4                      ;周期時間設定(R4)

T_Cnt               equ   5                      ;時間Counter(R5)


Led           reg    P2.0                  ;PWM基準脈波輸出


                org   0000H

                ljmp  MAIN

;*************************************************************************************************************************        

MAIN:              mov  TMOD,#01H             ;定時器0設置為工作方式1,16位(2^16)

                ;mov TL0,#B0H         ;設定中斷時間=50mSec=> (2^16 - 設定中斷時間)=> (65536-50000) = 15536 = 3CB0(Hex)

                ;mov TH0,#03CH               ;TH0= 03CH ; TL0 = B0H

                ;mov TL0,#F0H         ;設定中斷時間=10mSec=> (2^16 - 設定中斷時間)=> (65536-10000) = 55536 = D8F0(Hex)

                ;mov TH0,#0D8H              ;TH0= 0D8H ; TL0 = F0H

                mov  TL0,#18H         ;設定中斷時間=1mSec=> (2^16 - 設定中斷時間)=> (65536-1000) = 64536 = FC18(Hex)

                mov  TH0,#0FCH              ;TH0= 0FCH ; TL0 = 18H

                setb   TR0

               

                setb   Led

                mov  R2,#0

                mov  PW,#03H                  ;PW初始設定,進入主程序后會讀取P1狀態來重新設定

                mov  T,#11                        ;周期(中斷時間=1mSec)

                                                ;#128= 128mSec(7.8Hz)

                                                ;#101= 100mSec(10Hz)

                                                ;#15= 15mSec(67Hz)

                                                ;#11= 10mSec(100Hz)

                                                ;#9= 8mSec(124Hz)

                                                ;#8= 7mSec(140.9Hz)

                                                ;#7= 6mSec(167Hz)

                                                ;#6= 5mSec (197Hz)

                                                ;#5= 4mSec(250Hz)

                mov  T_Cnt,#1           ;周期Counter


LOOP:              jbc    TF0,CPLP         ;T0發生溢位則跳至CPLP

                ;T0未發生溢位

                call   CHG_P1                   ;讀取P1狀態設定為PW

                ajmp LOOP

               

CPLP:               

                ;mov TL0,#B0H         ;設定中斷時間=50mSec=> (2^16 - 設定中斷時間)=> (65536-50000) = 15536 = 3CB0(Hex)

                ;mov TH0,#03CH               ;TH0= 03CH ; TL0 = B0H

                ;mov TL0,#F0H         ;設定中斷時間=10mSec=> (2^16 - 設定中斷時間)=> (65536-10000) = 55536 = D8F0(Hex)

                ;mov TH0,#0D8H              ;TH0= 0D8H ; TL0 = F0H

                mov  TL0,#18H         ;設定中斷時間=1mSec=> (2^16 - 設定中斷時間)=> (65536-1000) = 64536 = FC18(Hex)

                mov  TH0,#0FCH              ;TH0= 0FCH ; TL0 = 18H

               

                inc    T_Cnt                       ;T_Cnt=T_Cnt+1

                mov  A,T_Cnt

                cjne  A,T, TA           ;if T_Cnt<>T then jump to TA

                ;ifT_Cnt=T

                clr    Led                   ;ON

                call   SET_CODE

                mov  T_Cnt,#1          ;T_Cnt=1 again, set break point here

TA:                                 

                mov  A,T_Cnt

                cjne  A,PW, TB                ;if T_Cnt<>PW then jump to TB

                ;ifT_Cnt=PW

                setb   Led                   ;OFF

                call   SET_CODE

                nop                           ;setbreak point here

TB:                                           ;

BACK:              ajmp LOOP

;*************************************************************************************************************************

;       取P1狀態當作設定值輸入

;*************************************************************************************************************************

CHG_P1:          push  PSW

                push  ACC

                mov  A,P1

                cpl    A

                anl    A,#11111111b           ;取P1.0~P1.7當作設定

                cjne  A,#0,PW_SET

                mov  PW,#3                      ;IFP1.0~P1.7=0 ; PW=3

                jmp   E_CHG_P1

PW_SET:          mov  PW,A

E_CHG_P1:      pop   ACC

                pop   PSW

                ret

;*************************************************************************************************************************

SET_CODE:     cjne  R2,#0,A1

                ;clr   P0.0                  ;clr  P0.0: ON(Low)

                ;setb  P0.1                  ;setb  P1.0:OFF(High)

                ;clr   P0.2                  ;clr   P0.2:ON(Low)

                mov  P0,#11111111B         ;0:ON(Low); 1:OFF(High)

                inc    R2

                jmp   A_END

               

A1:           cjne  R2,#1,A2

                ;clr   P0.0                  ;clr  P0.0: ON(Low)

                ;setb  P0.1                  ;setb  P1.0:OFF(High)

                ;clr   P0.2                  ;clr   P0.2:ON(Low)

                mov  P0,#11111110B         ;0:ON(Low); 1:OFF(High)

                inc    R2

                jmp   A_END

               

A2:           cjne  R2,#2,A3

                mov  P0,#11111111B

                inc    R2

                jmp   A_END

               

A3:           cjne  R2,#3,A4

                mov  P0,#11111101B

                inc    R2

                jmp   A_END

               

A4:           cjne  R2,#4,A5

                mov  P0,#11111111B

                inc    R2

                jmp   A_END

               

A5:           cjne  R2,#5,A6

                mov  P0,#11111011B

                inc    R2

                jmp   A_END

               

               

A6:           cjne  R2,#6,A_CLR

                mov  P0,#11111111B

                ;inc   R2

                ;jmp  A_END

                jmp   A_CLR

               

A7:           cjne  R2,#7,A8

                mov  P0,#11111011B

                inc    R2

                jmp   A_END

               

A8:           cjne  R2,#8,A_CLR

                mov  P0,#11111111B

               

A_CLR:            mov  R2,#1

A_END:            ret

;*************************************************************************************************************************

                end


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

使用道具 舉報

沙發
ID:2318 發表于 2014-9-23 15:07 來自手機 | 只看該作者
能共享一下電路圖嗎?或者電路連接的說明也可以
回復

使用道具 舉報

板凳
ID:67573 發表于 2014-10-18 10:46 | 只看該作者
匯編太牛了
回復

使用道具 舉報

地板
ID:67849 發表于 2014-10-24 00:19 | 只看該作者
璧烇紒妤間富澶帀瀹充簡鍟婏紒
回復

使用道具 舉報

5#
ID:66501 發表于 2014-10-24 13:47 | 只看該作者
鎺樺楂樻墜錛屼笓鎸栧彜澧擄紝涓
回復

使用道具 舉報

6#
ID:73872 發表于 2015-8-4 16:56 | 只看該作者
匯編沒學過啊,,,,
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久国产精品99久久久大便 | 日韩欧美高清dvd碟片 | 欧美日韩国产精品激情在线播放 | 秋霞在线一区 | 欧美精品一区二区三区在线播放 | 在线成人| www.久久久.com| 久久91| 91精品国产91久久久久久丝袜 | 日本精品久久 | 91九色视频在线 | 日韩在线免费电影 | 99久热在线精品视频观看 | 99re在线免费视频 | 99re国产精品 | 国产99久久久国产精品 | 91青青草视频 | 亚洲成人av | 午夜激情一区 | 午夜小视频在线播放 | 北条麻妃一区二区三区在线观看 | 黄色网页在线 | 午夜伊人 | 国产视频不卡一区 | 国产精品成人在线播放 | 欧美在线一区二区三区 | 亚洲成人一区二区 | 91精品久久久久久综合五月天 | 天堂素人约啪 | 国产三级精品三级在线观看四季网 | 欧美日韩精品免费 | 亚洲男人网 | 久久午夜国产精品www忘忧草 | 精品国产乱码久久久久久蜜柚 | 天天躁日日躁狠狠很躁 | 欧美极品在线播放 | 亚洲高清视频在线 | 亚洲欧美中文日韩在线v日本 | 日本字幕在线观看 | 久久久精品高清 | 日韩不卡视频在线观看 |