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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3291|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

我寫的 x51 pwm 程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:66535 發(fā)表于 2014-9-23 12:31 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式

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

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

;制令編號:N/A

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

;版    本:V1.00.0

;設(shè)計(jì)者  : Richard

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

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

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

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

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

T_Cnt               equ   5                      ;時間Counter(R5)


Led           reg    P2.0                  ;PWM基準(zhǔn)脈波輸出


                org   0000H

                ljmp  MAIN

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

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

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

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

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

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

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

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

                setb   TR0

               

                setb   Led

                mov  R2,#0

                mov  PW,#03H                  ;PW初始設(shè)定,進(jìn)入主程序后會讀取P1狀態(tài)來重新設(shè)定

                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發(fā)生溢位則跳至CPLP

                ;T0未發(fā)生溢位

                call   CHG_P1                   ;讀取P1狀態(tài)設(shè)定為PW

                ajmp LOOP

               

CPLP:               

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

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

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

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

                mov  TL0,#18H         ;設(shè)定中斷時間=1mSec=> (2^16 - 設(shè)定中斷時間)=> (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狀態(tài)當(dāng)作設(shè)定值輸入

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

CHG_P1:          push  PSW

                push  ACC

                mov  A,P1

                cpl    A

                anl    A,#11111111b           ;取P1.0~P1.7當(dāng)作設(shè)定

                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 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲不卡 | 男女羞羞网站 | 国产人成精品一区二区三 | 久久久久久亚洲 | 色视频www在线播放国产人成 | 最新国产精品视频 | 国产福利免费视频 | 国产欧美日韩在线一区 | 成人深夜福利 | 国产一区二区三区视频在线观看 | 欧美一a一片一级一片 | 人人干人人超 | 久久av一区二区三区 | 日韩成人在线一区 | 一区精品视频在线观看 | 亚洲精品视频在线 | 日韩高清在线观看 | 久久久久精 | 亚洲国产高清高潮精品美女 | 亚洲精品免费观看 | 91久久久久久久 | 亚洲成av人片在线观看无码 | 久久综合99 | 欧美一级在线观看 | 亚洲精品美女在线观看 | 久久丝袜| 精品网站999www | 日本视频在线播放 | 欧美一级欧美一级在线播放 | 日韩欧美二区 | 日韩精品免费在线观看 | 国产欧美在线一区 | 毛片在线看片 | 欧美精品影院 | 日韩中文字幕在线视频观看 | 97国产爽爽爽久久久 | 一区二区三区不卡视频 | 欧美成人免费在线 | 四虎永久免费黄色影片 | 亚洲欧美日本在线 | 亚洲精品天堂 |