📄 接收.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 + -