欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 求呼吸燈(漸亮漸滅燈)匯編程序 [打印本頁]

作者: 狂奔烏龜    時間: 2017-12-19 12:42
標題: 求呼吸燈(漸亮漸滅燈)匯編程序
1. 設計要求
以單片機為核心,設計一個呼吸燈控制器。利用P1.1口產生100Hz頻率的方波,占空比可調,去驅動LED1。占空比越小,低電平時間比例越大,燈越亮。通過按鍵設置功能并實現。
2.采用LED顯示功能編號。
按鍵K1. 功能編號加1;
按鍵K2. 功能編號減1;
上述兩按鍵的操作只能在停止狀態下有效。
按鍵K3.啟動;
按鍵K4. 停止。
功能1:占空比0%
功能2:占空比25%
功能3:占空比50%
功能4:占空比75%
功能5:占空比100%
功能6:燈光從滅逐漸亮,用時2秒
功能7:燈光從亮逐漸滅,用時2秒
功能8:燈光從亮逐漸滅,用時2秒,之后從滅逐漸亮,用時2秒,如此反復。


作者: lxa0    時間: 2017-12-19 20:52
我這有一個:

;這是一個獨立控制2路PWM的匯編程序:
;2個輸出口以高電平為有效輸出,也就是當輸出100%時為高電平輸出,輸出0%時為低電平輸出。
;改變10H-11H的值可以控制2路PWM的占空比變化,例如當10H中的值從0-255變化時候,P1.0輸出從0%-100%變化
;頻率是完全恒定的.這里PWM波周期為(r7)50usx200=10mS,約為100Hz,晶振用的是12MHz


zzz EQU P1.0         ;左路馬達輸出口
yyy EQU P1.1         ;右路馬達輸出口
ld1 EQU 10H          ;左路馬達,即占空比的比值,0-255變化
ld2 EQU 11H          ;右路馬達,即占空比的比值,0-255變化


    ORG 0000H
    LJMP mm
    ORG 000BH
    LJMP t000

;主程序段*****************************************************************************
org 0100h
mm:nop               ;復位程序
mov r4,#00h          ;延時1秒用
mov r5,#00h
mov r6,#03h
MOV SP,#5fH
MOV P1,#0FFH         ; P1置高,關閉全部燈
MOV 10h,#0fH         ;給左路馬達賦值,0ffh為速度最快,00h為最慢
MOV 11h,#7fH         ;給右路馬達賦值,0ffh為速度最快,00h為最慢
mov r0,10h           ;將左路的賦值送進左路緩存
mov r1,11h           ;將右路的賦值送進右路緩存
MOV TMOD,#02H        ;50us t0方式2自動重裝
mov tcon,#00h
MOV TH0,#0cdH
MOV TL0,#0cdH
mov r7,#100          ;設定周期數據
SETB EA
SETB ET0
SETB TR0
mov 20h,#00h
m0:acall ys00        ;延時1秒
;acall pwm           ;改變速度子程序
sJMP m0

;定時器t0中斷子程序<占用區0>********************************************************************
org 0180h
t000:                 ;50us t0中斷子程序,用于實現三路PWM輸出
PUSH ACC
PUSH PSW
clr psw.4             ;進入區0
clr psw.3
CJNE R7,#00H,AA       ;從這里是程序的精華,檢測R7值是否為0,等于0則下一條重新賦值,否則跳到AA
MOV R7,#100           ;R7重新賦值
setb 07h              ;設置改變pwm數據標志位
MOV R0,10h            ;把左路速度值復制給R1
MOV R1,11h            ;把右路速度值復制給R2
AA:CJNE R0,#00H,BB    ;判斷控制左路的值是否(或是否被減為0)為0,是則下一條關閉左路,否則跳到BB
SETB zzz              ;關閉左路
sJMP CC               ;跳到CC檢測右路
BB:CLR zzz            ;打開(或繼續打開)左路
DEC R0                ;R1數值減1
CC:CJNE R1,#00H,DD    ;這里控制右路與上面左路原理一樣
SETB yyy
sJMP GG
DD:CLR yyy
DEC R1
GG: DEC R7            ;把R7的值減1,R7的初始值是#200h
POP PSW
POP ACC
RETI

;延時1秒時間子程序*****************************************************
org 0200h
ys00:push dph
push dpl
push acc
push psw
clr psw.4             ;進入區0
clr psw.3
ys1:djnz r4,ys1
ys2:djnz r5,ys1
ys3:djnz r6,ys1
mov r4,#00h
mov r5,#00h
mov r6,#03h
acall pwm
pop psw
pop acc
pop dpl
pop dph
ret

;pwmr改變pwm時間子程序*****************************************************
org 0280h
pwm:jb 07h,pwm1       ;一個完整周期到否?
ret                   ;未到則返回
pwm1:push acc
push psw
clr psw.4             ;進入區0
clr psw.3
mov a,10h
cjne a,#7fh,pwm3     ;未到最大則繼續
mov 10h,#0fh
sjmp pwm4
pwm3:mov a,10h
add a,#10h
mov 10h,a
pwm4:mov a,11h
cjne a,#0fh,pwm6     ;未到最小則繼續
mov 11h,#7fh
sjmp pwm11
pwm6:mov a,11h
subb a,#10h
mov 11h,a
pwm11:clr 07h
pop acc
pop psw
ret

END
作者: rrqxx    時間: 2017-12-19 21:04
網上找到的,你看看怎么樣。 呼吸燈.rar (35.15 KB, 下載次數: 64)

應用實例1 呼吸燈.rar

35.15 KB, 下載次數: 46

呼吸燈


作者: 狂奔烏龜    時間: 2017-12-25 16:22
lxa0 發表于 2017-12-19 20:52
我這有一個:

;這是一個獨立控制2路PWM的匯編程序:

這個用不了AT89S52
作者: lxa0    時間: 2017-12-31 13:07
狂奔烏龜 發表于 2017-12-25 16:22
這個用不了AT89S52

修改一下用于AT89C2051/4051也可以的。




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1