单片机抢答器程序

发布者:纸扇轻摇最新更新时间:2012-12-31 来源: 51hei关键字:单片机  抢答器  at89x51 手机看文章 扫描二维码
随时随地手机看文章

#include
#define uchar unsigned char
#define uint unsigned int

void delay(uint);
void sysini(void);

/************************************************************
*本程序版权所有
*http://www.51hei.com  荣誉出品
*c语言编写的单片机抢答器程序已经测试成功,大家烧写到芯片中就可以直接使用了
*************************************************************/

void main(void)
{sysini();

while(1)
   {

   P2=0x3f;
   P2=0x3f;
   if(P1!=0xff)
      {P2=0x7c;
       P3_1=0;
       delay(65535);
       P3_1=1;
       continue;
      }
   while(P1==0xff);                  //循环判断 等待按键,同时显示0
                                     //读取数据
   switch(P1)
     {case 0xfe:P2=0x03;break; //1
      case 0xfd:P2=0x6d;break; //2
      case 0xfb:P2=0x67;break; //3
      case 0xf7:P2=0x53;break; //4
      case 0xef:P2=0x76;break; //5
      case 0xdf:P2=0x7e;break; //6
      case 0xbf:P2=0x23;break; //7
      case 0x7f:P2=0x7f;break; //8
      default: P2=0x7c;
    }
   P3_1=0;
   delay(65535);
   P3_1=1;
 
   while(P3_2)
     {if(!P3_2) break;
      if(!P3_2) break;
      if(!P3_2) break;
      if(!P3_2) break;
   }

   }
    


}

    
void delay(uint a)
{uint i;
 for(i=0;i  ;
}

void sysini(void)
{P2=0x00;delay(10000);
 P2=0x01;delay(10000);
 P2=0x02;delay(10000);
 P2=0x04;delay(10000);
 P2=0x08;delay(10000);
 P2=0x10;delay(10000);
 P2=0x20;delay(10000);
 P2=0x00;delay(40000);
 

 P2=0x38;delay(40000);
 P2=0x00;delay(40000);
 P2=0x7b;delay(40000);
 P2=0x00;delay(40000);
 P2=0x7b;delay(40000);
 P2=0x00;delay(40000);


 P2=0x01;delay(30000);
 P2=0x03;delay(30000);
 P2=0x07;delay(30000);
 P2=0x0f;delay(30000);
 P2=0x1f;delay(30000);
 P2=0x3f;delay(30000);
}

  
  
---------下面还介绍一个汇编语言编程的单片机抢答器程序原理请读者自行分析-------------------

        C0002: 
        MOV     P2,#0C0H
        C0004:
 MOV     A,P1
 CPL     A
 JZ      C0004
 C0005:
        MOV     R7,P1
        MOV     A,R7
        ADD     A,#081H
        JZ      C0014
        ADD     A,#0C0H
        JZ      C0013
        ADD     A,#0E0H
        JZ      C0012
        ADD     A,#0F0H
        JZ      C0011
        ADD     A,#0F8H
        JZ      C0010
        ADD     A,#0FCH
        JZ      C0009
        ADD     A,#0FEH
        JZ      C0008
        DEC     A
        JNZ     C0015
        C0007:
        MOV     P2,#0FCH
        SJMP    C0016
        C0008:
        MOV     P2,#092H
        SJMP    C0016
        C0009:
        MOV     P2,#098H
        SJMP    C0016
        C0010:
        MOV     P2,#0ACH
        SJMP    C0016
        C0011:
        MOV     P2,#089H
        SJMP    C0016
        C0012:
        MOV     P2,#081H
        SJMP    C0016
        C0013:
        MOV     P2,#0DCH
        SJMP    C0016
        C0014:
        MOV     P2,#080H
        SJMP    C0016
        C0015:
        MOV     P2,#088H
        C0016:
        JNB     P3_1,C0002
        SJMP    C0016m

关键字:单片机  抢答器  at89x51 引用地址:单片机抢答器程序

上一篇:单片机秒表设计程序
下一篇:单片机跑马灯程序

推荐阅读最新更新时间:2024-03-16 13:15

AVR单片机采集DS18B20并LCD显示
#include iom16v.h #include macros.h #define uchar unsigned char #define uint unsigned int #define beep_0 (PORTD = PORTD&0x7F) #define beep_1 (PORTD = PORTD|0x80) #define RS_0 PORTC &= ~(1 PC0) #define RS_1 PORTC |= (1 PC0) #define RW_0 PORTC &= ~(1 PC1) #define RW_1 PORTC |= (1 PC1) #define EN_0 PORTC &= ~(1 pc2)
[单片机]
AVR<font color='red'>单片机</font>采集DS18B20并LCD显示
51单片机闪烁流水灯
是51单片机的,利用定时器/计数器产生2秒定时,每当2秒到时候更换指示灯闪烁,指示灯闪烁频率为0.2秒(要用延时程序)。 -------- 做而论道的回答: 这个题目,又要用定时器,又要用延时程序,... 其实,各种定时要求,只需使用一个定时器,就都可以解决。 ;假设在 P0 口外接 8 个 LED,输出低电平时发光。 ;下面程序,已经通过了实验,符合题目的流水灯闪烁要求. ;------------------------------------------ ORG 0000H LJMP START ORG 000BH MOV TH0, #4CH ;50ms@11.
[单片机]
51<font color='red'>单片机</font>闪烁流水灯
PIC单片机的应用设计技巧
美国微芯公司(Microch{p Technology Inc.)开发的CM0S工艺PIC系列8位单片机(RISC微控制器),特别是采用内置第二代Flash存储器(40年存储寿命)的微控制器在快速应用方面具有独到之处。由于其易用性和高可靠性,该系列微控制器稳居8位单片机全球出货量之首。PIC系列单片机具有指令集简洁、简单易学、速度高、功能强、功耗低、价格低廉、体积小巧、适用性好及抗干扰能力强等特点,大量应用于汽车电气控制、电机控制、工业控制仪表和仪表、通信、家电、玩具、低功耗的测控应用等领域,在国内越来越受到广大设计者的欢迎,微芯公司的单片机已经成为目前单片机世界的主流产品。 PIC 8位单片机内已经包含运算器、存储器、A/D、P
[单片机]
基于MCS-51单片机的数码管显示自加1功能的实现
 本文主要介绍基于MCS-51单片机的数码管显示实现自加1功能,从1一直显示到999.以下是硬件电路图、功能实现图以及源代码。(电路:使用74HC573锁存器控制段选,74H138控制位选;) 实现数码管自加的代码:   #include reg52.h   #define uchar unsigned char   #define uint unsigned int   uchar code table = {0x3f,0x06,0x5b,0x4f,   0x66,0x6d,0x7d,0x07,0x7f,   0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //
[单片机]
基于MCS-51<font color='red'>单片机</font>的数码管显示自加1功能的实现
avr单片机LED灯循环位移汇编程序
本程序中使用的avr单片机是m16芯片,可以让8个led实现循环移位的效果/* * loopLEDLight.asm * * Created: 2014/3/14 9:47:20 * Author: Wujie */ .include m16def.inc .def temp1=r20 .def count=r17 .org $0000 rjmp main .org $002A main: ldi r16,high(RAMEND) out sph,r16 ldi r16,low(RAMEND) out spl,r16 ser temp1 out ddrc,temp1 out portc,temp1 ldi c
[单片机]
28-基于51单片机的智能窗帘设计
具体实现功能 系统由STC89C51+1602液晶+步进电机+光敏电阻+按键模块+DS1302时钟模块+ADC0832模块+电源构成。 1、LCD1602显示日期和时间、当前控制模式及光照强度; 2、可通过按键切换:手动模式、定时模式、光控模式; 3、手动模式:通过开窗帘和关窗帘键对窗帘进行控制; 4、定时模式:通过按键设置开窗帘和关窗帘的时间; 5、光控模式:光照强度大于设置值时开启窗帘,否则关闭; 6、步进电机正转半圈,模拟开窗,红色LED灯点亮;电机反转半圈,模拟关窗,红色LED灯熄灭。 按键说明: 按键1:切换模式(在手动模式、定时模式、光控模式循环切换) 按键2:进入当前时间的设置(年
[单片机]
28-基于51<font color='red'>单片机</font>的智能窗帘设计
C#与51单片机串口通信
C#与51单片机串口通信 51接受数据,PC发送数据。 通过单片机的数码管将PC发送的16进制数据显示出来。 51接受数据代码: #include reg51.h #include string.h #include intrins.h sbit LS138A = P2^2; //定义138译码器的输入A脚由P2.2控制 sbit LS138B = P2^3; //定义138译码器的输入脚B由P2.3控制 sbit LS138C = P2^4; //定义138译码器的输入脚C由P2.4控制 unsigned char ch; bit read_flag= 0 ; //此表为 LED 的
[单片机]
TI - MCU - MSP430使用指南14 -> I2C通信(eUSCI)
说到MSP430 MCU的I2C资源,那么首先就得先看一下USCI。 如果你了解过多款MSP430 MCU你会发现,内部资源里有USCI和eUSCI,那么他们什么意思呢? USCI (Universal Serial Communication Interface),即通用串行通信接口,eUSCI中的e则是enhanced的意思,即增强型,那么有什么区别呢? 一些主要的区别如下表所示,F2xx这一列代表USCI,FR57xx代表eUSCI 更多详细区别,请查看TI官方文档: http://www.ti.com/lit/an/slaa522a/slaa522a.pdf 其实你会发现 区别不是很大,仅仅是寄存器
[单片机]
TI - <font color='red'>MCU</font> - MSP430使用指南14 -> I2C通信(eUSCI)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved