[BASCOM-AVR例程]双色二极管实验 - 单片机应用 - 博趣

  无线电   专题策划 行业动态 测试测量 单片机 精彩制作 精品套件 基础入门 试阅与下载 往期目录 官方淘宝店 制汇节
当前位置:博趣 -> 无线电 -> 单片机应用

TOP

[BASCOM-AVR例程]双色二极管实验
发表日期:2012-03-02 09:05:25 来源:麦克鼠单片机学习网 作者: 【 】 浏览:3493次 评论:0
实验目的

掌握 AVR 单片机 I/O 口的输入 / 输出控制技巧。学习 Basic 程序中的控制循环的 DO 。。。 LOOP 语句, 完成秒延时功能的 Wait语句 ,单片机硬件配置语句 Config ,以及系统参数设置语句 $regfile 和 $crystal 等语句。

难度等级:入门
 
硬件搭建
2号实验板上双色发光二极管(标识为A接线排)的1、2引脚分别接PC0、PC1(第23、24引脚)。用A型2位跳线,一端插在发光二极管的A端,另一端插入单片机实验主板的C端口0、1位即可。
程序代码
源程序下载DoubleColor.bas
'----------------------------------------------------------------------------------------------------
$regfile = "m48def.dat"
$crystal = 8000000

Config Portc.0 = Output
Config Portc.1 = Output
Do
Portc = 1

Wait 2
Portc = 2

Wait 2
Loop
End
' 指定目标单片机为 ATmega48
' 指定系统时钟8兆
' Config 语句用来配置硬件
' 配置 PC0 口输出
' 配置 PC1 口输出
' 循环开始
' 向端口 C 输出: 00000001 ;既 pc0 置 1 ,为高电平,
' pc1 置 0 ,为低电平。双色二极管发红光。
' 等待 2 秒
' 向端口 C 输出: 00000010 ;既 pc0 置 0 ,为低电平,
' pc1 置 1 ,为高电平。双色二极管法绿光。
' 等待 2 秒
' 循环返回
' 程序结束

程序讲解
  1. $regfile和$crystal语句
    编译器在开始编译一个程序之前,要知道一些基本数据,例如:目标芯片是何种型号,系统时钟是多少,以便计算软定时的循环次数等等。
    这些数据一般在Options->Compiler中都有缺省设置,但不一定就是你正在编写的芯片。
    $regfile和$crystal两个语句的作用主要是明确告诉编译器用什么型号芯片的寄存器文件,以及系统时钟是多少,用以覆盖缺省设置。
  2. Config 硬件配置语句
    对AVR单片机端口的配置在BASCOM Basic里有多种方法
    1. 端口配置方法一
      CONFIG PORTx = 状态字
      状态字可以是:Output 或 Input
      例:
      Config Portc.0 = Output
      Config Portc.1 = Output
    2. 端口配置方法二
      直接使用两进制数
      例:
      Config Portc = &B00000011
      或使用十六进制数
      Config Portc = &H03
    3. 端口配置方法三
      CONFIG PINx.y = 状态字
      例:
      Config Pinc.0 = Output
      Config Pinc.1 = Output
    4. 端口配置方法四
      直接对方向寄存器进行配置,与汇编或是C程序类似
      例:
      Ddrc.0 = 1
      Ddrc.1 = 1
      或直接使用两进制数
      Ddrc = &B00000011
      或十六进制数
      Ddrc = &H03
  3. 循环语句
    日常生活中我们常常反复重复做一件事,在程序中这就是循环结构。
    语法:
    DO
    语句



    LOOP [ UNTIL 表达式]
    如果仅是DO 。。。LOOP则程序无限循环(直至关电源)。如果加入UNTIL 后跟一个布尔(条件)表达式,程序会在每次到达LOOP时检查这个条件是否满足。
    例:
    A = 1 ‘初始化变量A 等于1
    Do
    Incr A ‘A 增1
    Loop Until A = 10 ‘直至A 等于10 循环结束
  4. 向端口赋值(输出)语句
    Portc = 1
    是向端口C送数1,也就是将端口的第0位置1。
    可以是两进制写法
    Portc = &B0000001
    或是十六进制写法
    Portc = &H01
    同理
    Portc = 2
    是将端口C的第1位置1。
    或写成
    Portc = &B00000010

    Portc = &H02
  5. 秒延时语句Wait
    延时语句后跟数字表示延时的秒数。由于是软件延时所以不是十分准确。而且编译器是根据$crystal中的设置安排循环次数的,由此可以看出$crystal语句的作用。
    该语句有几个派生语句
    a) 毫秒延时语句Waitms
    b) 微妙延时语句 Waitus
    后跟数字表示延时多少毫秒或微妙。
  6. 程序结束语句 END
    End 表示程序的结束。
程序功能
该程序只有一个无限循环程序块。循环中的执行语句间隔2秒钟交替向端口C送数1和2,接在端口上的双色发光二极管就会交替变换颜色闪烁。
观看演示>>
思考题

试着改变延时时间,或改变双色二极管的接法,观察变化。

 > 相关内容:

 
Tags:BASCOM-AVR 例程 双色 二极管 实验 责任编辑:博趣
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇[BASCOM-AVR例程]8 LED 管跑马灯.. 下一篇[BASCOM-AVR例程]单片机学习入门..

赞助商链接

最新文章

热门文章

推荐文章