; Qizil va yashil ranglarni bir vaqtning o'zida yoqish
ldi R16, (RED<
out PORT, R16 ; Portga qiymat yozish
call DELAY ; kuchli kuchga o'tish uchun kutilayotgan vaqtni kutish
; Sariq rangni yoqish
ldi R16, (1<
out PORT, R16 ; Portga qiymat yozish
call DELAY ; kuchli kuchga o'tish uchun kutilayotgan vaqtni kutish
; Sariq va yashil ranglarni bir vaqtning o'zida yoqish
ldi R16, (YELLOW<
out PORT, R16 ; Portga qiymat yozish
call DELAY ; kuchli kuchga o'tish uchun kutilayotgan vaqtni kutish
; Yo'qotish
ldi R16, 0x00 ; Port Bning barcha pinlarini o'chirish
out PORT, R16 ; Portga qiymat yozish
call DELAY ; kuchli kuchga o'tish uchun kutilayotgan vaqtni kutish
rjmp MAIN ; Boshqa ranglarga o'tish uchun asosiy dasturga qaytish
; Kuchli kuchga o'tishni kutish funktsiyasi
DELAY:
ldi R17, 0xFF ; Inner loop uchun o'zgaruvchi
OUTER_LOOP:
ldi R18, 0xFF ; Inner loopning boshlang'ich qiymati
INNER_LOOP:
dec R18 ; Inner loopning qiymatini kamaytirish
brne INNER_LOOP ; Inner loopni takrorlash
dec R17 ; Outer loopning qiymatini kamaytirish
brne OUTER_LOOP ; Outer loopni takrorlash
ret
Ushbu kod mikrokontrollerdagi PORTB registri orqali svetofornning turli ranglari uchun yoqish va yo'qotish jarayonini amalga oshiradi. Kodning boshida yordamchi holat sozlanishi va asosiy dastur (MAIN) mavjud. DELAY nomli yordamchi funktsiya vaqtni kutilayotgan kuchli kuchga o'tish uchun ishlatiladi.
Svetofornning har bir rangi uchun kerakli pinlar yonaltiriladi va yoqiladi. Uch to'rtinchi qadam DELAYfunktsiyasi orqali kuchli kuchga o'tish uchun vaqtni kutishingiz mumkin. Ushbu kod mikrokontrollerga svetofornni yoqish, ranglarni almashtirish va yo'qotishning o'zaro mosligini amalga oshiradi. B
// Svetoforni Arduino platformasida C++ tilida dasturlovchi koddan o'tkazamiz
// Pinlar
const int redPin = 9;
const int yellowPin = 10;
const int greenPin = 11;