您好,欢迎来到图艺博知识网。
搜索
您的当前位置:首页RGB三基色LED变色程序

RGB三基色LED变色程序

来源:图艺博知识网


本程序用于控制RGB三基色 LED ,使其按红,绿,蓝,紫,黄,青,白顺序渐变

每种颜色的渐变时间为9.3ms.

ORG 0000H

LJMP MAIN

ORG 000BH ; 定时器0入口地址

LJMP TIM0

ORG 001BH ; 定时器1入口地址

LJMP TIM1

ORG 0100H

;---------------------------------------------------

;--- 设置定时初值,T1定时时间长度为9.3毫秒,T0定时时间长度为0.15-9.15毫秒,占空比为1.6%-98.3%

MAIN: MOV SP , #09H

MOV R0, #0 ;灯颜色状态计数器

MOV R1, #0FAH ;对T1产生的中断计数

MOV R2, #06H ;T0定时器定时长度增加值

MOV R3, #0 ;和R1配合对T1产生的中断进行计数

MOV R4, #2CH ;存放TL0的值

MOV R5, #0E8H ;存放TH0的值

MOV TMOD , #11H ;T0定时模式,方式1,T1定时模式,方式1

MOV TH0 , R5 ;T0定时初值, 占空比

MOV TL0, R4

MOV TL1, #0C8H ;T1定时初值, 定时时间9.45ms

MOV TH1, #0E7H

SETB PT0

SETB ET0

SETB ET1

SETB EA

SETB TR0

SETB TR1

SJMP $ ;等待中断

;--------------------------------定时器T0中断

TIM0: CLR TF0

MOV TH0 , R5 ;重新设定定时初值

MOV TL0, R4

CJNE R0, #0, L1 ;逐渐变红

CLR P1.4

SETB P1.3

SETB P1.2

SJMP AAA

L1: CJNE R0, #1, L2 ;逐渐变绿

SETB P1.4

CLR P1.3

SETB P1.2

SJMP AAA

L2: CJNE R0, #2, L3 SETB P1.4

SETB P1.3

CLR P1.2

SJMP AAA

L3: CJNE R0, #3, L4 CLR P1.4 SETB P1.3

;逐渐变蓝

;逐渐变紫

CLR P1.2

SJMP AAA

L4: CJNE R0, #4, L5 ;逐渐变黄

CLR P1.4

CLR P1.3

SETB P1.2

SJMP AAA

L5: CJNE R0, #5, L6 SETB P1.4

CLR P1.3

CLR P1.2

SJMP AAA

L6: CJNE R0, #6, L7 ; 逐渐变青

;逐渐变白

CLR P1.4

CLR P1.2

CLR P1.3

SJMP AAA

L7: CJNE R0, #7, L1 ; 逐渐变红

CLR P1.4

SETB P1.3

SETB P1.2

AAA: RETI

;--------------------------------定时器T1中断

TIM1: CLR TF1

MOV TH1, #0E7H ;对T1重新置定时初值

MOV TL1, #0C8H

CJNE R0, #0, L11

LCALL DE1 ;增加TL0值,延长定时时间

JBC 00H, D00 ;00H位为一,9.45S到

JNC D0 ;如果TL0产生进位

LCALL DE2 ;将TH0值加1

D0: SETB P1.4

D00: LJMP BBB

L11: CJNE R0, #1, L12

LCALL DE1

JBC 00H, D11

JNC D1

LCALL DE2

D1: CLR P1.4

SETB P1.3

D11: LJMP BBB

L12: CJNE R0, #2, L13

LCALL DE1

JBC 00H, D22

JNC D2

LCALL DE2

D2: CLR P1.3

SETB P1.2

D22: LJMP BBB

L13: CJNE R0, #3, L14

LCALL DE1

JBC 00H, D33

JNC D3

LCALL DE2

D3: SETB P1.4

D33: LJMP BBB

L14: CJNE R0, #4, L15

LCALL DE1

JBC 00H, D44

JNC D4

LCALL DE2

D4: SETB P1.3

CLR P1.2

D44: LJMP BBB

L15: CJNE R0, #5, L16

LCALL DE1

JBC 00H, D55

JNC D5

LCALL DE2

D5: CLR P1.4

SETB P1.2

D55: LJMP BBB

L16: CJNE R0, #6, L17

LCALL DE1

JBC 00H, D66

JNC D6

LCALL DE2

D6: SETB P1.4

D66: LJMP BBB

L17: CJNE R0, #7, L11

LCALL DE1

JBC 00H, BBB

JNC D7

LCALL DE2

D7: CLR P1.3

CLR P1.2

BBB: RETI

;------------------------改变定时器初值

DE1: DJNZ R1, S0

MOV R1, #0FAH

INC R3

CJNE R3, #4, S0

MOV R3, #0 ;R3为4时9.45s时间到,重新置初值, 否则增加原有初值时间

INC R0

CJNE R0, #8, S1 MOV R0, #1

S1: CLR C

SETB 00H

MOV R5, #0E8H

MOV R4, #02CH

MOV TH0,R5

MOV TL0, R4

SJMP CCC

S0: CLR C

;R0为8时,重新循环

MOV TH0, R5

MOV A, R4

ADD A, R2

MOV TL0, A

MOV R4, A

CCC: RET

DE2: INC R5 ;当TL0低位产生进位时,将TH0的值加1

;CJNE R5, #00H, ZZ

;MOV R5, #0FFH

;MOV R4, #0F6H

MOV TH0, R5

CLR C

RET

END

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuoyibo.net 版权所有 湘ICP备2023021910号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务