编写51单片机程序,输出方波。
要求:晶振为12MHz,用T0做定时器,在P1的低四位输出四种频率的方波:

P1.3 = 1.25kHz、P1.2 = 2.5kHz、P1.1 = 5kHz、P1.0 = 10kHz

另外,P1.6、P1.7的输出做四选一数据选择器的选择位,它们由P3.0按键控制,从上述的低四位输出频率中,选出一种再输出。
悬赏分:10 - 解决时间:2009-12-5 10:45
//===================================================
最佳答案:
以下程序已经仿真成功,你试试看。
//---------------------------------------------------
#include <reg52.h>
#define uchar unsigned char
#define TL_0SET (256 - 50)   //定时时间选为50us
                             //输出的方波周期将为100us, 10kHz
sbit P1_6 = P1^6;
sbit P1_7 = P1^7;
sbit P3_2 = P3^2;

bdata uchar x = 0;
sbit p16 = x^0;
sbit p17 = x^1;

uchar i, j;
//---------------------------------------------------
void e0int() interrupt 0 //外部中断0作开关,控制四选一数据选择器
{
    while(P3_2 == 0) {;}     //等待按键释放
    x++;
    if(x == 4) x = 0;
    P1_7 = p16;
    P1_6 = p17;
}
//---------------------------------------------------
void time0() interrupt 1 //T0的中断服务程序
{                              //T0工作在方式2,自动装入初始值
    i++;
    j = i % 16;               //取i的低四位
    j = j + p17 * 128 + p16 * 64; //组合上数据选择器的控制信号
    P1 = j;                   //输出四种频率的方波以及控制信号
}
//---------------------------------------------------
void main()
{
    TMOD = 0x02;              //T0定时方式2
    TH0 = TL_0SET;            //自装入式的定时初始值
    TR0 = 1;                   //启动T0
    ET0 = 1;
    IT0 = 1;                   //外部中断0由下降沿触发
    EX0 = 1;                   //外部中断0允许
    EA = 1;
    while(1) {;}
}
//---------------------------------------------------
回答者: 做而论道     回答时间:2009-12-2 08:46
提问者对于答案的评价:我真的很感谢您,希望以后有机会还能得到您的指导
原题网址:http://zhidao.baidu.com/question/127702122.html?si=1
//===================================================

编写51单片机程序,输出方波,at89s52的单片机相关推荐

  1. 单片机DAC输出方波简易实验

    单片机DAC输出方波简易实验 简易的DAC实验,想要输出方波,但是输出了的是一条直线. 改P0为端口P2 排查原因了解到是端口的问题 P0口:双向8位三态I/O口,每个口可独立控制.51单片机P0口内 ...

  2. 编写C语言程序 输出一个菱形

    用C语言程序实现打印出一个菱形,观察菱形,它的每一行前面会有空格,要打印菱形,首先要算出空格多少的规律,以及每行*的数目,把菱形分为上下两部分打印,上半部分规律:观察最长的一行,它的*数目是它行数的二 ...

  3. 编写一个java程序 输出全部的希腊字母_编写一个Java应用程序,输出全部的希腊字母。...

    package 输出; public class App { public static void main(String args[]) { int s= 0, e= 0; char c= 'α', ...

  4. 51单片机程序开发入门知识

    51单片机在我的理解上来说,就是遵循51指令集工作的芯片.他就像一台超微型的电脑,里面有内存.硬盘.CPU等基本配备. 而他所谓的CPU使用的就是51指令集,他的硬盘就是内置的Flash,他的内存也是 ...

  5. 九九乘法表python语言编程软件_编写Python程序,输出如下的九九乘法表_学小易找答案...

    [其它]写出下图的梯形图程序对应的语句表 (26.0分) [简答题]PLC一般的编程语言有几种?分别是什么? (5.0分) [其它]定义一个getMax函数,返回三个数(从键盘输入的整数)中的最大值. ...

  6. 单片机广告灯实验总结_温州很强的ly51s单片机程序开发公司

    温州很强的ly51s单片机程序开发公司 sdthfsfd 温州很强的ly51s单片机程序开发公司 "时,表示波特率自适应工作正确完成,如图所示,可以进行参数设置和校准操作.这也是为什么晶振的 ...

  7. 如何使用Keil uVision2软件调试单片机程序

    本文转载自: http://www.cnblogs.com/ugoer/archive/2007/05/01/171986.html 作者:ugoer 转载请注明该声明. 先说一个概念:调试,在企业程 ...

  8. Vscode开发STM32单片机程序

    STM32单片机非常强大,大多数教程都是使用 keil 编译器,keil 是收费的而 gcc 是开源免费的.这里介绍一些使用 gcc + vscode 开发单片机程序的经验.(这里不解释 gcc 是什 ...

  9. c语言编写51单片机中断程序,执行过程是怎样的?

    Q:c语言编写51单片机中断程序,执行过程是怎样的? 例如程序: #include<reg52.h>   void main(void)   {    EA=1;      //开放总中断 ...

最新文章

  1. quartz定时任务开发cron常用网站
  2. 百度 和 AI教父Hinton 的故事
  3. udp_socket聊天器demo
  4. mysql常用的分组函数
  5. 光纤测试仪为什么使用单芯法为光纤损耗测量
  6. 大家都在说的分布式系统到底是什么
  7. 【简明笔记】循环条件的优化
  8. android 调用restful,android调用springmvc写的restful
  9. 为树莓派制作系统镜像时进行瘦身,方便后续保存与批量写入
  10. 第一篇:wine介绍
  11. 26 王者荣耀刷金币脚本
  12. SpringDataJPA使用Specification动态查询和分页
  13. iphone3GS iOS6.0.1不完美越狱详细图文教程
  14. 量化7年1000万知与行,回测量化7年如果只每月定投5.4万到沪深300指数基金,能否实现7年1000万
  15. 常用邮箱服务器地址大全截止2020-9
  16. 002_Python基础学习网站
  17. 【无标题】计统大作业-hello
  18. word的大表格中自动换页
  19. 利用腾讯会议开展远程面试的解决方案
  20. 微计算机原理及应用第八章,微机原理第八章--8251讲解

热门文章

  1. php中判断是否为偶数,在PHP中检查偶数和奇数
  2. 面试被问:你了解的海康威视是一家怎样的公司?
  3. 两个单词之间的编辑距离
  4. 手把手教你用Arcgis绘制地图【热力图】
  5. Linux 服务器上传下载文件到阿里网盘
  6. Qt 之字体文件(TTF)
  7. JAVA训练nlp模型,完胜 BERT,谷歌最佳 NLP 预训练模型开源
  8. 算法LeetCode解题(C++)-15. 四数之和(难度:中等)
  9. 算法提高 盾神与积木游戏
  10. Base64方式上传文件