大家一起来学单片机:LED花样灯
发布时间:2008/5/27 0:00:00 访问次数:1156
    
     恒坚单片机实验软件上的一个程序。注释完整。
    <-- #begineditable "2" --> led显示实验:主要掌握单片机的基本vo操作,主要是指如何操作端o。其中含有将操作端o做为8位寄存器寻址方式的操作和按位寻址的操作方式,另外还包含有软件延时:预顶义,存贮单元硬件描术表的建立。
    源程序:<-- #endeditable -->
    <-- #begineditable "3" -->
    beep bit p3.7 ;蜂鸣器定义对应的单片机引脚
    led1 bit p1.0 ;第一个数码管对应的引脚
    led2 bit p1.1 ;第二个数码管对应的引脚
    led3 bit p1.2 ;第三个数码管对应的引脚
    led4 bit p1.3 ;第四个数码管对应的引脚
    led5 bit p1.4 ;第五个数码管对应的引脚
    led6 bit p1.5 ;第六个数码管对应的引脚
    led7 bit p1.6 ;第七个数码管对应的引脚
    led8 bit p1.7 ;第八个数码管对应的引脚
    org 00h;程序开始
    jmp main;跳转到主程序
    org 030h;主程序从30h开始
    main:mov sp,#30h;初始化堆栈,这一条语句不能放到初始化程序里
   否则程序不能正确返回,为什么?
    lcall rest ;调用初始化程序,进行初始化
    lcall pro_led ;调用led显示程序
    jmp main;返回开始
    rest:mov a,#00h ;初始化程序,首先将累加器清零
    mov b,#00h;累加器b也请零
    mov p0,#0 ;所有p0口置低位,禁止数码管显示
    mov p1,0ffh;p1口高位,led也不显示
    mov p2,#255;p2口也高位,禁止数码管显示,
   将立即数写成#255(后面没有h)表示十进制,
   如果写成#0ffh(后面有个h)表示十六进制,
   如果十六进制高位大于9,必须在前面加上0,
   如0a0h,结果还是 a0h(160),0ah(10)否则编译不能通过
    clr beep;禁止蜂鸣器发出声音,如果写成setb beep(置位蜂鸣器)
   则蜂鸣器发出声音
    ret ;子程序返回
    ******************************************* 注意:注释字符前一定要加上;
    ***********************
   led显示程序用来控制led的显示,通常用在街道霓虹等控制等
   采用两种不同的走灯方式,可以采用不同的策略,组合出不同的走灯花样
   单片机学习的窍门就是多实践,希望大家多从应用程序中得到启示
   不断进步,从而提高自己的单片机应用能力
    pro_led: ;led显示程序开始
    setb led1;显示第一个led
    clr led8 ;清除前一个led
    lcall delay ;延时
    setb led2 ;进入第二个循环,显示第二个led
    clr led1 ;清除第一个led
    lcall delay ;如此反复,直到所有的led都循环过
    setb led3
    clr led2
    lcall delay
    setb led4
    clr led3
    lcall delay
    setb led5
    clr led4
    lcall delay
    setb led6
    clr led5
    lcall delay
    setb led7
    clr led6
    lcall delay
    setb led8
    clr led7
    lcall delay
    again: ;开始另外一种显示方式
    setb led7 ;点亮第7个led
    clr led8
    
     恒坚单片机实验软件上的一个程序。注释完整。
    <-- #begineditable "2" --> led显示实验:主要掌握单片机的基本vo操作,主要是指如何操作端o。其中含有将操作端o做为8位寄存器寻址方式的操作和按位寻址的操作方式,另外还包含有软件延时:预顶义,存贮单元硬件描术表的建立。
    源程序:<-- #endeditable -->
    <-- #begineditable "3" -->
    beep bit p3.7 ;蜂鸣器定义对应的单片机引脚
    led1 bit p1.0 ;第一个数码管对应的引脚
    led2 bit p1.1 ;第二个数码管对应的引脚
    led3 bit p1.2 ;第三个数码管对应的引脚
    led4 bit p1.3 ;第四个数码管对应的引脚
    led5 bit p1.4 ;第五个数码管对应的引脚
    led6 bit p1.5 ;第六个数码管对应的引脚
    led7 bit p1.6 ;第七个数码管对应的引脚
    led8 bit p1.7 ;第八个数码管对应的引脚
    org 00h;程序开始
    jmp main;跳转到主程序
    org 030h;主程序从30h开始
    main:mov sp,#30h;初始化堆栈,这一条语句不能放到初始化程序里
   否则程序不能正确返回,为什么?
    lcall rest ;调用初始化程序,进行初始化
    lcall pro_led ;调用led显示程序
    jmp main;返回开始
    rest:mov a,#00h ;初始化程序,首先将累加器清零
    mov b,#00h;累加器b也请零
    mov p0,#0 ;所有p0口置低位,禁止数码管显示
    mov p1,0ffh;p1口高位,led也不显示
    mov p2,#255;p2口也高位,禁止数码管显示,
   将立即数写成#255(后面没有h)表示十进制,
   如果写成#0ffh(后面有个h)表示十六进制,
   如果十六进制高位大于9,必须在前面加上0,
   如0a0h,结果还是 a0h(160),0ah(10)否则编译不能通过
    clr beep;禁止蜂鸣器发出声音,如果写成setb beep(置位蜂鸣器)
   则蜂鸣器发出声音
    ret ;子程序返回
    ******************************************* 注意:注释字符前一定要加上;
    ***********************
   led显示程序用来控制led的显示,通常用在街道霓虹等控制等
   采用两种不同的走灯方式,可以采用不同的策略,组合出不同的走灯花样
   单片机学习的窍门就是多实践,希望大家多从应用程序中得到启示
   不断进步,从而提高自己的单片机应用能力
    pro_led: ;led显示程序开始
    setb led1;显示第一个led
    clr led8 ;清除前一个led
    lcall delay ;延时
    setb led2 ;进入第二个循环,显示第二个led
    clr led1 ;清除第一个led
    lcall delay ;如此反复,直到所有的led都循环过
    setb led3
    clr led2
    lcall delay
    setb led4
    clr led3
    lcall delay
    setb led5
    clr led4
    lcall delay
    setb led6
    clr led5
    lcall delay
    setb led7
    clr led6
    lcall delay
    setb led8
    clr led7
    lcall delay
    again: ;开始另外一种显示方式
    setb led7 ;点亮第7个led
    clr led8