⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 接收.bas

📁 红外遥控器已被广泛使用在各种类型的家电产品上
💻 BAS
字号:
$regfile = "m8def.dat"                                      ' 定义目标单片机是ATmega8
$crystal = 1000000

'====定义使用的定时中断为1,分频系数为64====

Config Timer1 = Timer , Prescale = 64

'======定义定时中断处理子程序===============
On Ovf1 Ding_shi

'=====设定定时中断初始值,约为1秒============

Timer1 = 49910

'===== 打开定时中断 ========================

Enable Timer1
'===== 定义红外接受引脚 ===================

Config Rc5 = Pind.2

'=====打开总中断==========================
Enable Interrupts


'========= 定义所有的变量 ================

Dim Dingshi As Byte                                         '定义定时变量
Dim A As Word                                               '定义累加器


 Dim Bianhao As Byte
 Dim Bian_hao As Byte
 Dim Daima As Byte

 Dim Key_1 As Byte                                          '定义所有按键
 Dim Key_2 As Byte
 Dim Key_3 As Byte
 Dim Key_4 As Byte
 Dim Key_5 As Byte

'========= 初始化所有变量 ====================
Dingshi = 0
A = 0
                                                             '初始化定时
                                                             '初始化累加器


Bian_hao = 0
Key_1 = 1
Key_2 = 2
Key_3 = 3
Key_4 = 4
Key_5 = 5


Lamp_1 Alias Portb.6
Lamp_2 Alias Portb.7
Lamp_3 Alias Portd.5
L4 Alias Portd.6
L5 Alias Portd.7
L6 Alias Portb.0

Config Lamp_1 = Output                                      '定义所有指示灯为输出
Config Lamp_2 = Output
Config Lamp_3 = Output
Config L4 = Output
Config L5 = Output
Config L6 = Output


                                                              '初始化指示灯全灭
Lamp_1 = 0
Lamp_2 = 0
Lamp_3 = 0
L4 = 0
L5 = 0
L6 = 0


Main:

Do

Getrc5(bianhao , Daima)

If Bianhao = Bian_hao And Daima = Key_1 Then Gosub Key_1_do '开灯1

If Bianhao = Bian_hao And Daima = Key_2 Then Gosub Key_2_do '开灯2

If Bianhao = Bian_hao And Daima = Key_3 Then Gosub Key_3_do '开灯3

If Bianhao = Bian_hao And Daima = Key_4 Then Gosub Key_4_do '全关


If Bianhao = Bian_hao And Daima = Key_5 Then Gosub Key_5_do '定时关闭

Loop


End

'开灯1
Key_1_do:
      Lamp_1 = 1
      Lamp_2 = 0
      Lamp_3 = 0

Return

'开灯2
Key_2_do:
      Lamp_1 = 0
      Lamp_2 = 1
      Lamp_3 = 0

Return

'开灯3
Key_3_do:
      Lamp_1 = 0
      Lamp_2 = 0
      Lamp_3 = 1

Return



'全关
Key_4_do:
      Lamp_1 = 0
      Lamp_2 = 0
      Lamp_3 = 0
      L4 = 0
      L5 = 0
      L6 = 0
Return



'======= 定时关闭子程序 ======================

Key_5_do:

Dingshi = Dingshi + 1

'====== 定时关闭灯1 =========================
If Dingshi = 1 And Lamp_1 = 1 Then
                                   L4 = 1
                                   L5 = 0
                                   L6 = 0
                                   A = 0
                                   Timer1 = 49910
End If
If Dingshi = 1 And Lamp_2 = 1 Then
                                   L4 = 1
                                   L5 = 0
                                   L6 = 0
                                   A = 0
                                   Timer1 = 49910
End If
If Dingshi = 1 And Lamp_3 = 1 Then
                                   L4 = 1
                                   L5 = 0
                                   L6 = 0
                                   A = 0
                                   Timer1 = 49910
End If

'===== 定时关闭灯2 ========================
If Dingshi = 2 And Lamp_1 = 1 Then
                                   L4 = 0
                                   L5 = 1
                                   L6 = 0
                                   A = 0
                                   Timer1 = 49910
End If
If Dingshi = 2 And Lamp_2 = 1 Then
                                   L4 = 0
                                   L5 = 1
                                   L6 = 0
                                   A = 0
                                   Timer1 = 49910
End If
If Dingshi = 2 And Lamp_3 = 1 Then
                                   L4 = 0
                                   L5 = 1
                                   L6 = 0
                                   A = 0
                                   Timer1 = 49910
End If

'===== 定时关闭灯3===========================

If Dingshi = 3 And Lamp_1 = 1 Then
                                   L4 = 0
                                   L5 = 0
                                   L6 = 1
                                   A = 0
                                   Timer1 = 49910
End If
If Dingshi = 3 And Lamp_2 = 1 Then
                                   L4 = 0
                                   L5 = 0
                                   L6 = 1
                                   A = 0
                                   Timer1 = 49910
End If
If Dingshi = 3 And Lamp_3 = 1 Then

                                   L4 = 0
                                   L5 = 0
                                   L6 = 1
                                   A = 0
                                   Timer1 = 49910
End If

'=========关闭定时=============================
If Dingshi = 4 Then
                   Dingshi = 0
                   L4 = 0
                   L5 = 0
                   L6 = 0

End If


Return






'============ 定时中断子程序 ===================

Ding_shi:
         A = A + 1

'===== 定时5秒关灯=============================

If A = 5 And L4 = 1 And Lamp_1 = 1 Then
                                           L4 = 0
                                           Lamp_1 = 0

End If

If A = 5 And L4 = 1 And Lamp_2 = 1 Then
                                           L4 = 0
                                           Lamp_2 = 0

End If



If A = 5 And L4 = 1 And Lamp_3 = 1 Then
                                           L4 = 0
                                           Lamp_3 = 0

End If

'========= 定时10秒关灯=======================

If A = 10 And L5 = 1 And Lamp_1 = 1 Then
                                           L5 = 0
                                           Lamp_1 = 0

End If

If A = 10 And L5 = 1 And Lamp_2 = 1 Then
                                          L5 = 0
                                           Lamp_2 = 0

End If



If A = 10 And L5 = 1 And Lamp_3 = 1 Then
                                           L5 = 0
                                           Lamp_3 = 0

End If

'======= 定时30秒关灯===========================

If A = 30 And L6 = 1 And Lamp_1 = 1 Then
                                           L6 = 0
                                           Lamp_1 = 0

End If

If A = 30 And L6 = 1 And Lamp_2 = 1 Then
                                           L6 = 0
                                           Lamp_2 = 0

End If



If A = 30 And L6 = 1 And Lamp_3 = 1 Then
                                           L6 = 0
                                           Lamp_3 = 0

End If

Timer1 = 49910

Return

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -