郭天祥视频教程完整C程序文件
与飞YF-K1开发板说明书

7
与飞电子
二极管就是要给予它足够大的正向压降。所以点亮数码管其实也就是给它内部相 应的发光二极管正向压降。如上图左(一共a、b、c、d、e、f、g、DP 八段), 如果要显示“1”则要点亮b、c 两段LED;显示“A”则点亮a、b、c、e、f、g 这 六段LED;我们还知道,既然LED 加载的是正向压降,它的两端电压必然会有高 低之分:如果八段LED 电压高的一端为公共端,我们称之为共阳极数码管(如上 图中);如果八段LED 电压低的一段为公共端,则称之为共阴极数码管(上图右)。 所以,要点亮共阳极数码管,则要在公共端给予高于非公共端的电平;反之点亮 共阴极数码管,则要在非公共端给予较高电平。
与飞电子 51 开发板 YF-K1 使用说明书
目录
前言………………………………………………………………………1 致读者……………………………………………………………………2 准备工作…………………………………………………………………3 51单片机YF-K1开发板资源及实现功能……………………………… 5 一、LED灯(流水灯)………………………………………………… 6 二、数码管………………………………………………………………7 三、独立按键……………………………………………………………11 四、矩阵按键(4*4)…………………………………………………16 五、蜂鸣器………………………………………………………………18 六、继电器………………………………………………………………19 七、PWM …………………………………………………………………21 八、 直流电机 …………………………………………………………22 九、步进电机……………………………………………………………23 十、DS18B20温度传感器………………………………………………25 十一、红外接收…………………………………………………………29 十二、1602字符型液晶显示……………………………………………31 十三、12864液晶显示 …………………………………………………36 十四、DS1302 实时时钟 ………………………………………………40 十五、AT24C02 存储芯片………………………………………………45 十六、AD/DA 模数/数模转换 …………………………………………49
单片机百度盘资料

一、51单片机1、祥云51单片机学习光盘(视频教程、例程、操作系统)适合初学者资料下载链接:https:///cJzLQdrBfp2KD 访问密码8f772、普中51单片机学习光盘/s/1pK0c4BL3、郭天祥----十天征服单片机/s/1i4N2Hrn4、新概念51单片机C语言教程.入门、提高、开发(500页,郭天祥著)https:///cYAYJtgFJNUup 访问密码9eb15、力天电子51单片机视频教程/s/1hrulifU6、天狼星51单片机视频教程链接:/s/1pKsD3b9 密码:scy48、STC12C5A60S2例程https:///cjPpH7uBBbIr8 访问密码a471二、AVR单片机1、郭天祥--十天学会AVR单片机视频教程https:///cwVbV5mWw9pxk 访问密码34ba1、锐志电子AVR单片机视频教程https:///cweRHU4JUSypY 访问密码64b22、手把手AVR单片机视频教程https:///cm926G3YrWKhG 访问密码dccb3、DY_miniAVR单片机光盘资料https:///c3fIFUrWu4LEG 访问密码00364、AVR代码生成器https:///c3fILqj5h3aT9 访问密码20615、AVR开发工具https:///c3fI3satMGmSh 访问密码d3566、AVR例程https:///c3fIFfSgCzhWE 访问密码48c1三、msp430单片机1、郭天祥---十天学会msp430单片机https:///cYAYvyxDBaHgr 访问密码4dca2、力天msp430单片机视频教程https:///cYAY83HwRumTn 访问密码d66c3、msp430 c语言.pdfhttps:///cYAY577Ucc7b2 访问密码86b34、msp430教程.pdfhttps:///cYAYtXwXYesgC 访问密码ccbf5、IAR C 430标准库函数.pdfhttps:///cYAYnInwURHZx 访问密码52ef四、PIC单片机1、郭天祥--十天学会pic单片机https:///cYAYDyx2Zydsi 访问密码af9b2、王伟民pic单片机教程https:///cYAYz37WLEaYZ 访问密码2312五、STM32嵌入式教程1、正点原子《手把手教你学STM32-M3》-基于正点原子战舰STM32开发板/s/1hqOsK6K2、正点原子《手把手教你学STM32-M4》-基于正点原子探索者STM32F4开发板/s/1hqOsK7q3、正点原子 UCOS/EMWIN/LWIP视频-基于正点原子STM32开发板/s/1qWsXTfu4、mini基础板视频教程光盘链接:/s/1hqVhZdq 密码:rhab5、stm32历程链接:/s/1jH0maay 密码:hcy26、众想单片机stm32视频教程链接:/s/1hrwmnRY 密码:rb887、李想stm32视频教程链接:/s/1jGZN9kE 密码:m9668、红龙stm32开发板光盘链接:/s/1i4mGYqT 密码:uc5v9、stm’32清晰教程链接:/s/1bogN6Gn 密码:p7pt10、stm32官方文件链接:/s/1c1gfzva 密码:s2gs11、stm32资料pdf资料总汇(20)篇/s/1gdTioq3/s/1eQQ2qPG/s/1i4iDiYh/s/1o7avuCq/s/1gdNIv79/s/1dDTmnRz/s/1mhyggcS12、基于嵌入式实时操作系统的程序设计技术_周航慈_北航.pdf/s/1dEmOZBz13、任哲-嵌入式实时操作系统μCOS-II原理及应用.pdf/s/1jHyjZOM14、嵌入式操作系统uCOS-II(第二版)/s/1dEkhscD15、ucos2经典讲解/s/1o7bHpbG16、邵贝贝ucos操作系统全书.pdf/s/1sklKEz717、零死角玩转stm32-系统篇(uCOS-II)/s/1mhazyQk18、ucosii学习文档集/s/1jGRadIQ六、ARM7、ARM9视频教程1、郭天祥ARM7视频教程https:///cwVbAjCw9JL95 访问密码627d2、郭天祥ARM9视频教程https:///cYARicupI5tjL 访问密码1f283、郭天祥郭天祥CPLD视频教程https:///cwVbfP2dTEeRq 访问密码f955七、CORTEX—A内核arm教程1、基于cortex-a内核的指令链接:/s/1c1qURXe 密码:zux42、国嵌学院cortex-a嵌入式视频全集(内部视频)链接:/s/1pKwEjLh 密码:mc9r3、wince6.0镜像链接:/s/1dEuq3uT 密码:14ww4、wince6.0源码链接:/s/1i4ymmdn 密码:fpb0 5、vs2005链接:/s/1boiP2Bd 密码:7spr 6、QT视频教程链接:/s/1i4fpok1 密码:o4q3 链接:/s/1c0ZtQbI 密码:fwkq 7、QT在Android下编程教程链接:/s/1geft1Z1 密码:z2gq 8、cortex-a下游戏安装集链接:/s/1o84B9WY9、天嵌210光盘资料10张(视频、源码、电路)链接:/s/1boCjt5110、andriod资料链接:/s/1i42VQSH 密码:7fbg 11、windows下资料链接:/s/1i4bRBoT 密码:nqan 12、linux操作系统资料链接:/s/1behIfc 密码:c13n 13、wince操作系统资料/s/1YHVRK14、ARM64-zip链接:/s/1sk1Z6Mx 密码:7uc3 15、QT源码包链接:/s/1boj5ptt 密码:w9bv 16、linux源码包链接:/s/1geyWgPd 密码:qz8z 17、linux开发工具链接:/s/1qXaXmB6 密码:n5ka八、其他资料1、AD6.9 PCB设计教程(15G)https:///cjGM4TkItmeCH 访问密码6e71 2、autocad视频教程https:///cHP5pRjnFbYEA 访问密码ea0d 3、C++课件https:///c3WZYx7h56wZW 访问密码62f8 4、c语言参考手册https:///cjGMTU6WgxQs8 访问密码65a2 5、protel99视频教程https:///c3FHH4rSdp8pH 访问密码1011 6、protues8视频教程https:///cwVbKL73tJtkT 访问密码068e链接:/s/1TYmHg 密码:5l5m 7、SolidWorks视频教程(初级、高级)https:///cYABpMI5Yu4a5 访问密码fc708、VC++视频教程https:///cYABNBtWUfziZ 访问密码71479、zigbee文档资料视频教程https:///cYABipqm9VmTS 访问密码737c10、zigbee-cc2530光盘资料链接:/s/1nubduNf 密码:h6n211、zigbee组网、栈协议教程链接:/s/1nubduNf 密码:h6n212、常用74芯片、电阻、电容、电感、三级管、运放等资料集https:///cYA6ghmYJRUMN 访问密码5449https:///cYA6sTMXiCpEg 访问密码86f4https:///cYA6AztRiuDHN 访问密码8129https:///cYA6fkEyFb9qS 访问密码bd7ahttps:///cYA6KVtPtzN8R 访问密码751a13、VB资料文档+视频教程https:///cYA6Jt5cHvJtJ 访问密码31a514、matlab教程文档+视频https:///cYA6Z4ZneS92Y 访问密码bc3615、瑞萨开发板光盘-电子设计大赛专用https:///cctk6idf8A7HZ 访问密码b92516、你必须知道的495个C语言问题高清PDF中文版全书https:///cYA6QyFqqhcqq 访问密码ee8a 17、电路设计技术与技巧第二版高清晰pdf中文版https:///cYA6cfvbcMtHY 访问密码fcaf 18、战舰-GSM短信模块教程资料链接:/s/1qXaXmIo 密码:e2vk 19、语音模块资料https:///cYA6LifVjRi2n 访问密码0a2920、无线通信模块资料https:///cYA63EabvaH6J 访问密码9eac 21、指纹识别模块资料https:///cYA6r3jtbJKYT 访问密码e9b0 22、顺平linux视频教程(内部)链接:/s/1nuzzQGx 密码:521t 23、jave零基础视频教程链接:/s/1boh3v6B 密码:bqux 24、大数据学习资料链接:/s/1kUtyzPH 密码:miv2 25、android手机端编程视频教程链接:/s/1skiwKOH 密码:rriv 26、陀螺仪-飞控-四旋翼-电路仿真mulitism资料链接:/s/1c1mQU8S 密码:d0e6。
郭天祥新概念51单片机C语言教程例题Word版

目录例2.2.1 编写程序,点亮第一个发光二极管(part2_1.c P27 ) .................. - 4 -例2.5.1利用for语句延时特性,编写第一个发光二极管以间隔1S亮灭闪动的程序(part2_3.c P42) ............................................................................................. - 5 -例2.6.1编写程序使第一个发光二极管以间隔500ms亮灭闪动。
(part2_4.c P48) .................................................................................................................................. - 5 -例2.7.1编写程序使第一个二极管以亮200ms、灭800ms的方式闪动。
(part2_5.c P49) ........................................................................................................................... - 6 -例2.8.3利用C51自带库_crol_(),以间隔500ms,实现流水灯程序(part2_6.c P53) .................................................................................................................................. - 6 -例3.2.1编写程序使第一个数码管显示8(part2.1_.1c P59) ......................... - 7 -例3.2.2让实验板上6个数码管同时点亮,依次显示0到F,时间间隔为0.5ms,循环下去。
51单片机C语言教程-郭天祥-PDF转word版第二章

本章详细介绍单片机程序常用编译软件Keil的用法,包括用Kei建立工程、工程配置、C51单片机程序软件仿真、单步、全速、断点设置、变量查看等。同时还介绍如何使用SST89E516RD单片机进行计算机与TX-IC单片机学习板之间的硬件仿真。用一个完整的C51程序来操作发光二极管的点亮与熄灭,然后调用C51库函数来方便地实现流水灯,最后为大家补充蜂鸣器与继电器的操作方法及集电极开路与漏极开路的概念。从这一章开始我们将手把手地讲解单片机C语言编程。认真学好本章,对于初学者来说将会是一个非常好的开头。
REG52.H
Header generic 80C52 and 80C32 microcontroller.
Copyright (c) 1988-2001 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved.
--------------------------------------------------------------------------*/
tx1c实验板上发光二极管处连接锁存器的目的是因为发光二极管通过锁存器连接到单片机的p1口而板上ad芯片的数据输出端也连接到单片机的p1口当我们在做ad实验时ad芯片的数据输出端的数据就会实时发生变化而若不加锁存器那么发光二极管的阴极电平也跟随ad的数据输出的变化而变化这样就会看见发光管无规则闪动为了在做ad实验时不影响发光二极管我们在发光二极管与单片机之间加入一个锁存器用以隔离当做ad实验时我们可通过单片机将此锁存器的锁存端关闭而此时无论单片机p1口数据怎么变化发光二极管也不会闪动
完后续的代码而引发出更多的错误。解决办法如下:我们须将错误信息窗口右侧的滚动条拖到最上面,双击第一条错误信息,可以看到Keil软件自动将错误定位,并且在代码行前面出现一个蓝色的箭头。需要说明的是,有些错误连Keil软件自身也不能准确显示错误信息,更不能准确定位,它只能定位到错误出现的大概位置,我们根据这个大概位置和错误提示信息自己再查找和修改错误。双击图2.2.3中第一条错误信息后,显示如图2.2.4所示。
C语言视频编程掌握在C语言中处理视频数据的方法

C语言视频编程掌握在C语言中处理视频数据的方法C语言是一种广泛应用于嵌入式系统和底层编程的编程语言,它也可以用于处理和操控视频数据。
在本文中,我们将重点介绍C语言中处理视频数据的方法和技巧。
一、视频数据的表示和存储在C语言中处理视频数据之前,我们首先需要了解视频数据的表示和存储方式。
视频数据通常由一系列图像帧组成,每个图像帧由像素组成。
常见的视频存储格式包括AVI、MP4等,它们在存储视频数据时采用了特定的压缩算法。
二、读取视频文件要在C语言中处理视频数据,我们首先需要读取视频文件。
可以利用C语言提供的文件操作函数来读取二进制文件,对于视频文件来说,我们需要了解其文件结构和格式,然后使用相应的文件操作函数读取并解析视频文件的头部信息和帧数据。
三、处理视频帧当成功读取视频文件后,我们需要对每一帧的像素进行处理。
视频帧通常采用RGB、YUV等格式来表示。
在C语言中,我们可以利用指针和数组来访问和修改视频帧中的像素。
例如,可以使用双层循环遍历每个像素,并对像素进行操作,如图像增强、滤波等。
四、视频编码和解码在视频处理过程中,编码和解码是不可或缺的环节。
视频编码是将视频数据压缩为较小的文件大小,以方便存储和传输;而视频解码则是将压缩后的视频数据还原为原始的视频图像。
在C语言中,我们可以使用第三方库或自行实现视频编码和解码算法,如使用FFmpeg库进行视频编码和解码操作。
五、视频特效处理除了基本的视频处理操作外,C语言还可以实现一些高级的视频特效处理。
例如,可以使用C语言实现图像变形、颜色转换、镜像翻转等特效操作。
这些特效处理可以为视频增添艺术效果,提升用户的观看体验。
六、视频合成和输出当完成视频的处理后,我们需要将处理后的视频重新合成为一个完整的视频文件,并输出到显示设备或保存到磁盘中。
在C语言中,可以使用文件操作函数创建新的视频文件,并将处理好的视频帧逐帧写入到文件中,最终生成一个输出视频文件。
小结:在本文中,我们介绍了C语言中处理视频数据的方法和技巧。
c语言视频教程

c语言视频教程★视频说明★所有的c语言视频教程都已经收集到百度网盘了,大家只需要转存就可以了;希望能够帮得到大家,谢谢!★视频目录★第01套:C语言基础--百度推荐课程--千锋潘老师第02套:[IT教程网]边用边学C语言视频教程[更新完毕-共享完毕]第03套:[IT教程网]计算机二级等级考试c语言程序设计教程c语言入门到精通视频教程[更新完毕-共享完毕]第04套:[IT教程网]孙鑫C 教程[更新完毕-共享完毕]第05套:[IT教程网]闲云野鹤C语言系列培训教程[更新完毕-共享完毕]第06套:[IT教程网]安全中国C语言视频教程第07套:[IT教程网]C语言视频教学录像第08套:[IT教程网]C语言也能干大事视频教程全集(高清)第09套:[IT教程网]郝斌C语言视频教程第10套:[IT教程网]黑色旋风C语言vip教程第11套:[IT教程网]编程加油站视频学C语言(1-18课)第12套:[IT教程网]嵌入式c语言视频教程-尚观第13套:[IT教程网]全国计算机等级考试二级C语言视频教程第14套:[IT教程网]甲壳虫2012年VIP_C语言初级班(18课)第15套:[IT教程网]编程加油站视频学C语言(1-18课)[共享完毕]第16套:[IT教程网]嵌入式c语言基础视频教程[更新完毕-共享完毕]第17套:[IT教程网]嵌入式c语言视频教程-尚观[更新完毕-共享完毕]第18套:[IT教程网][黑客基地:C语言编程特训班].毒宫玫瑰.共26讲[共享完毕]第19套:[IT教程网][黑鹰基地:C语言编程特训班].桂圆.共18讲[共享完毕]第20套:[IT教程网]微普年薪10W版C语言教学视频【绝密】[共享完毕]第21套:[IT教程网]全国计算机等级考试二级C语言视频教程[更新完毕-共享完毕]第22套:[IT教程网]C语言视频教程-谭浩强版-小甲鱼主讲(2.75G)[共享完毕]第23套:[IT教程网]C语言视频教程[共享完毕]第24套:[IT教程网]C语言,好爽(第一二三季)[更新完毕-共享完毕]第25套:C语言学习资料第26套:【IT教程网】C语言视频教学录像【更新完毕-共享完毕】第27套:【IT教程网】C语言视频教程【更新完毕-共享完毕】第28套:【IT教程网】范磊主讲c语言视频教程【更新完毕-共享完毕】第29套:【IT教程网】黑色旋风C语言vip教程【更新完毕-共享完毕】第30套:【IT教程网】郝斌C语言视频教程【更新完毕-共享完毕】第31套:【IT教程网】C语言也能干大事视频教程全集(高清)【更新完毕-共享完毕】第32套:小七论坛2013年VIPC语言系列教程-第33套:甲壳虫2012年VIP_C语言高级班(7课)★视频截图★。
单片机资料百度盘

一、51单片机一、祥云51单片机学习光盘(视频教程、例程、操作系统)适合初学者资料下载链接:https://yunpan/cJzLQdrBfp2KD 访问密码 8f77二、普中51单片机学习光盘pan.baidu/s/1pK0c4BL3、郭天祥----十天征服单片机4、新概念51单片机C语言教程.入门、提高、开发(500页,郭天祥著)https://yunpan/cYAYJtgFJNUup 访问密码 9eb15、力天电子51单片机视频教程pan.baidu/s/1hrulifU6、天狼星51单片机视频教程链接:pan.baidu/s/1pKsD3b9 密码:scy4八、STC12C5A60S2例程https://yunpan/cjPpH7uBBbIr8 访问密码 a471二、AVR单片机一、郭天祥--十天学会AVR单片机视频教程https://yunpan/cwVbV5mWw9pxk 访问密码 34ba1、锐志电子AVR单片机视频教程https://yunpan/cweRHU4JUSypY 访问密码 64b22、手把手AVR单片机视频教程https://yunpan/cm926G3YrWKhG 访问密码 dccb3、DY_miniAVR单片机光盘资料https://yunpan/c3fIFUrWu4LEG 访问密码 00364、AVR代码生成器https://yunpan/c3fILqj5h3aT9 访问密码 20615、AVR开发工具https://yunpan/c3fI3satMGmSh 访问密码 d3566、AVR例程https://yunpan/c3fIFfSgCzhWE 访问密码 48c1三、msp430单片机一、郭天祥---十天学会msp430单片机https://yunpan/cYAYvyxDBaHgr 访问密码 4dca2、力天msp430单片机视频教程https://yunpan/cYAY83HwRumTn 访问密码 d66c3、msp430 c语言.pdfhttps://yunpan/cYAY577Ucc7b2 访问密码 86b34、msp430教程.pdfhttps://yunpan/cYAYtXwXYesgC 访问密码 ccbf5、IAR C 430标准库函数.pdfhttps://yunpan/cYAYnInwURHZx 访问密码 52ef 四、PIC单片机一、郭天祥--十天学会pic单片机https://yunpan/cYAYDyx2Zydsi 访问密码 af9b2、王伟民pic单片机教程https://yunpan/cYAYz37WLEaYZ 访问密码 2312五、STM32嵌入式教程一、正点原子《手把手教你学STM32-M3》-基于正点原子战舰STM32开发板2、正点原子《手把手教你学STM32-M4》-基于正点原子探讨者STM32F4开发板3、正点原子UCOS/EMWIN/LWIP视频-基于正点原子STM32开发板4、mini基础板视频教程光盘链接:pan.baidu/s/1hqVhZdq 密码:rhab5、stm32历程链接:pan.baidu/s/1jH0maay 密码:hcy26、众想单片机stm32视频教程链接:pan.baidu/s/1hrwmnRY 密码:rb887、李想stm32视频教程链接:pan.baidu/s/1jGZN9kE 密码:m9668、红龙stm32开发板光盘链接:pan.baidu/s/1i4mGYqT 密码:uc5v9、stm’32清楚教程链接:pan.baidu/s/1bogN6Gn 密码:p7pt10、stm32官方文件链接:pan.baidu/s/1c1gfzva 密码:s2gs11、stm32资料pdf资料总汇(20)篇12、基于嵌入式实时操作系统的程序设计技术_周航慈_北航.pdf13、任哲-嵌入式实时操作系统μCOS-II原理及应用.pdf14、嵌入式操作系统uCOS-II(第二版)15、ucos2经典讲解16、邵贝贝ucos操作系统全书.pdf17、零死角玩转stm32-系统篇(uCOS-II)18、ucosii学习文档集六、ARM7、ARM9视频教程一、郭天祥ARM7视频教程https://yunpan/cwVbAjCw9JL95 访问密码 627d2、郭天祥ARM9视频教程https://yunpan/cYARicupI5tjL 访问密码 1f282、郭天祥郭天祥CPLD视频教程https://yunpan/cwVbfP2dTEeRq 访问密码 f955七、CORTEX—A内核arm教程一、基于cortex-a内核的指令链接:pan.baidu/s/1c1qURXe 密码:zux42、国嵌学院cortex-a嵌入式视频全集(内部视频)链接:pan.baidu/s/1pKwEjLh 密码:mc9r3、wince6.0镜像链接:pan.baidu/s/1dEuq3uT 密码:14ww4、wince6.0源码链接:pan.baidu/s/1i4ymmdn 密码:fpb05、vs2005链接:pan.baidu/s/1boiP2Bd 密码:7spr6、QT视频教程链接:pan.baidu/s/1i4fpok1 密码:o4q3链接:pan.baidu/s/1c0ZtQbI 密码:fwkq7、QT在Android下编程教程链接:pan.baidu/s/1geft1Z1 密码:z2gq8、cortex-a下游戏安装集链接:pan.baidu/s/1o84B9WY9、天嵌210光盘资料10张(视频、源码、电路)链接:pan.baidu/s/1boCjt5110、andriod资料链接:pan.baidu/s/1i42VQSH 密码:7fbg2、windows下资料链接:pan.baidu/s/1i4bRBoT 密码:nqan3、linux操作系统资料链接:pan.baidu/s/1behIfc 密码:c13n4、wince操作系统资料pan.baidu/s/1YHVRK5、ARM64-zip链接:pan.baidu/s/1sk1Z6Mx 密码:7uc36、QT源码包链接:pan.baidu/s/1boj5ptt 密码:w9bv7、linux源码包链接:pan.baidu/s/1geyWgPd 密码:qz8z8、linux开发工具链接:pan.baidu/s/1qXaXmB6 密码:n5ka八、其他资料一、AD6.9 PCB设计教程(15G)https://yunpan/cjGM4TkItmeCH 访问密码 6e712、autocad视频教程https://yunpan/cHP5pRjnFbYEA 访问密码 ea0d3、C++课件https://yunpan/c3WZYx7h56wZW 访问密码 62f84、c语言参考手册https://yunpan/cjGMTU6WgxQs8 访问密码 65a25、protel99视频教程https://yunpan/c3FHH4rSdp8pH 访问密码 10116、protues8视频教程https://yunpan/cwVbKL73tJtkT 访问密码 068e链接:pan.baidu/s/1TYmHg 密码:5l5m7、SolidWorks视频教程(低级、高级)https://yunpan/cYABpMI5Yu4a5 访问密码 fc708、VC++视频教程https://yunpan/cYABNBtWUfziZ 访问密码 71479、zigbee文档资料视频教程https://yunpan/cYABipqm9VmTS 访问密码 737c10、zigbee-cc2530光盘资料链接:pan.baidu/s/1nubduNf 密码:h6n211、zigbee组网、栈协议教程链接:pan.baidu/s/1nubduNf 密码:h6n212、经常使用74芯片、电阻、电容、电感、三级管、运放等资料集https://yunpan/cYA6ghmYJRUMN 访问密码 5449https://yunpan/cYA6sTMXiCpEg 访问密码 86f4https://yunpan/cYA6AztRiuDHN 访问密码 8129https://yunpan/cYA6fkEyFb9qS 访问密码 bd7ahttps://yunpan/cYA6KVtPtzN8R 访问密码 751a13、VB资料文档+视频教程https://yunpan/cYA6Jt5cHvJtJ 访问密码 31a514、matlab教程文档+视频https://yunpan/cYA6Z4ZneS92Y 访问密码 bc362、瑞萨开发板光盘-电子设计大赛专用https://yunpan/cctk6idf8A7HZ 访问密码 b9253、你必需明白的495个C语言问题高清PDF中文版全书 https://yunpan/cYA6QyFqqhcqq 访问密码 ee8a4、电路设计技术与技术第二版高清楚pdf中文版https://yunpan/cYA6cfvbcMtHY 访问密码 fcaf5、战舰-GSM短信模块教程资料链接:pan.baidu/s/1qXaXmIo 密码:e2vk6、语音模块资料https://yunpan/cYA6LifVjRi2n 访问密码 0a297、无线通信模块资料https://yunpan/cYA63EabvaH6J 访问密码 9eac8、指纹识别模块资料https://yunpan/cYA6r3jtbJKYT 访问密码 e9b09、顺平linux视频教程 (内部)链接:pan.baidu/s/1nuzzQGx 密码:521t10、jave零基础视频教程链接:pan.baidu/s/1boh3v6B 密码:bqux11、大数据学习资料链接:pan.baidu/s/1kUtyzPH 密码:miv212、android电话端编程视频教程链接:pan.baidu/s/1skiwKOH 密码:rriv13、陀螺仪-飞控-四旋翼-电路仿真mulitism资料链接:pan.baidu/s/1c1mQU8S 密码:d0e6。
郭天祥单片机教学LESSON4数码管动态显示优秀课件.ppt

主程序
中断响应
中断请求
执行主 程序
断点
继续执行 主程序
执行 中断 处理 程序
中断返回
4.1 80C51中断的控制
一、中断允许控制
CPU对中断系统所有中断以及某个中断源的开放和屏 蔽是由中断允许寄存器IE控制的。
▪EX0(IE.0),外部中断0允许位; ▪ET0(IE.1),定时/计数器T0中断允许位; ▪EX1(IE.2),外部中断0允许位; ▪ET1(IE.3),定时/计数器T1中断允许位; ▪ES(IE.4),串行口中断允许位; ▪EA (IE.7), CPU中断允许(总允许)位。
▪TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自 动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU 可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可 以用软件置1或清0,同硬件置1或清0的效果一样。 ▪TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置 0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/ 计数器的启动与停止。 ▪TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。 ▪TR0(TCON.4):T0运行控制位,其功能与TR1类同。
TL0
TCON
TF1 TR1 TF0 TR0 GATE C/T M1 M0 GATE C/T M1 M0
外部中断相关位
T1方式
内部总线 TMOD T0方式
4.2.2 定时/计数器的控制
80C51单片机定时/计数器的工作由两个特殊功 能寄存器控制。TMOD用于设置其工作方式; TCON用于控制其启动和中断申请。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Lesson11#include<reg52.h>sbit D2=P1^2;unsigned int a;void main(){D2=0;/* for(a=0;a<=10000;a++){}; D2=1;for(a=0;a<=10000;a++){};*/ }2#include<reg52.h>void main(){P1=0xfd;}lesson21#include<reg52.h>sbit p1_1=P1^0unsigned int avoid main(){while(1){a=51000;p1_1=0;while(a--);a=51000;while(a--);p1_1=1;a=51000;while(a--);a=51000;while(a--);}}2#include<reg52.h>#define uint unsigned int#define uchar unsigned char sbit D1=P1^0;//void delay();void delay(uint);void main(){while(1){D1=0;delay(100);D1=1;delay(100);}}/*void delay(){uint x,y;for(x=100;x>0;x--) for(y=600;y>0;y--); }*/void delay(uint z) {uint x;uchar y;for(x=z;x>0;x--) for(y=20;y>0;y--); }lesson31#include<reg52.h>sbit dula=P2^6;sbit wela=P2^7;void main(){wela=1;P0=0xc0;wela=0;dula=1;P0=0x06;dula=0;while(1);}2 #include<reg52.h>#define uint unsigned int#define uchar unsigned char sbit dula=P2^6;sbit wela=P2^7;uchar num;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delay(uint z);void main(){wela=1;//11101010P0=0xea;wela=0;while(1){for(num=0;num<16;num++){dula=1;P0=table[num];dula=0;delay(1000);}}}void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}3#include<reg52.h>#define uint unsigned int#define uchar unsigned char sbit dula=P2^6;sbit wela=P2^7;sbit d1=P1^0;uchar num;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delay(uint z);void main(){EA=1;//开总中断EX0=1;//开外部中断0//IT0=1;TCON=0x01;wela=1;//11101010P0=0xea;wela=0;while(1){for(num=0;num<16;num++){d1=1;dula=1;P0=table[num];dula=0;delay(1000);}}}void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void exter0() interrupt 0{d1=0;}4#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit dula=P2^6;sbit wela=P2^7;sbit d1=P1^0;uchar num,num1;tt;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delay(uint z);void main(){num=0;tt=0;TMOD=0x11;//设置定时器0为工作方式1 TH0=(65536-10000)/256;TL0=(65536-10000)%256;TH1=(65536-20000)/256;TL1=(65536-20000)%256;// EA=1;//开总中断ET0=1;//开定时器0中断ET1=1;TR0=1;//启动定时器0TR1=1;wela=1;//11101010P0=0xea;wela=0;dula=1;P0=0x3f;dula=0;while(1){if(num1==25){num1=0;P1=~P1;}if(tt==100){tt=0;num++;if(num==16)num=0;dula=1;P0=table[num];dula=0;}}}void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void time0() interrupt 1 {TH0=(65536-10000)/256; TL0=(65536-10000)%256; tt++;}void time1() interrupt 3 {TH1=(65536-20000)/256;TL1=(65536-20000)%256; num1++;}Lesson4-1#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned char uchar temp,aa,num;sbit dula=P2^6;sbit wela=P2^7;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delay(uint z);void main(){num=0;aa=0;TMOD=0x01;TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;ET0=1;TR0=1;temp=0xfe;P1=temp;dula=1;P0=table[0];dula=0;wela=1;P0=0xc0;wela=0;while(1){delay(1000);temp=_crol_(temp,1);P1=temp;/* if(aa==40){aa=0;num++;if(num==16)num=0;dula=1;P0=table[num];dula=0;} */}}void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void timer0() interrupt 1{TH0=(65536-50000)/256; TL0=(65536-50000)%256; aa++;if(aa==40){aa=0;num++;if(num==16)num=0;dula=1;P0=table[num];dula=0;}}Lesson4-2#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned char uchar temp,aa,numdu,numwe; sbit dula=P2^6;sbit wela=P2^7;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar code tablewe[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; //void delay(uint z);void main(){numdu=0;numwe=0;aa=0;TMOD=0x01;TH0=(65536-5000)/256;TL0=(65536-5000)%256; EA=1;ET0=1;TR0=1;while(1){// delay(1000);// temp=_crol_(temp,1);// P1=temp;if(aa==1){aa=0;numdu++;if(numdu==7)numdu=1;dula=1;P0=table[numdu];dula=0;wela=1;P0=tablewe[numwe];wela=0;numwe++;if(numwe==6)numwe=0;}}}/*void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}*/void timer0() interrupt 1{TH0=(65536-5000)/256;TL0=(65536-5000)%256;aa++;}Lesson4-3#include<reg52.h>#define uint unsigned int#define uchar unsigned charuchar temp,aa,bai,shi,ge;sbit dula=P2^6;sbit wela=P2^7;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void display(uchar bai,uchar shi,uchar ge); void delay(uint z);void init();void main(){init();//初始化子程序while(1){if(aa==20){aa=0;temp++;if(temp==100){temp=0;}bai=temp/100;shi=temp%100/10;ge=temp%10;}display(bai,shi,ge);}}void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void display(uchar bai,uchar shi,uchar ge) {dula=1;P0=table[bai];dula=0;P0=0xff;wela=1;P0=0xfe;wela=0;delay(1);dula=1;P0=table[shi];dula=0;P0=0xff;wela=1;P0=0xfd;wela=0;delay(1);dula=1;P0=table[ge];dula=0;P0=0xff;wela=1;P0=0xfb;wela=0;delay(1);}void init(){wela=0;dula=0;temp=0;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;aa++;}Lesson5-1#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit dula=P2^6;sbit wela=P2^7;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x76,0x79,0x38,0x3f,0};uchar temp,t0,t1,bai,shi,ge,flag,flag1;uint shu;void init();voiddisplay(uchar,uchar,uchar,uchar,uchar,uchar) ;void delay(uint z){uint t1,y;for(t1=z;t1>0;t1--)for(y=110;y>0;y--);}void main(){init();while(1){if(flag1!=1)display(7,6,5,bai,shi,ge);elsedisplay(16,17,18,18,19,20); }}void init(){shu=432;temp=0xfe;P1=temp;TMOD=0x11;TH0=(65536-50000)/256;TL0=(65536-50000)%256; TH1=(65536-50000)/256;TL1=(65536-50000)%256; EA=1;ET0=1;ET1=1;TR0=1;TR1=1;}void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;t0++;if(flag!=1){if(t0==10){t0=1;temp=_crol_(temp,1);P1=temp;}}else{if(t0%4==0)P1=~P1;if(t0==60){TR0=0;P1=0xff;flag1=1;}}}void timer1() interrupt 3{TH1=(65536-50000)/256;TL1=(65536-50000)%256;t1++;if(t1==2){t1=0;shu--;bai=shu/100;shi=shu%100/10;ge=shu%10;if(shu==398){TR0=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;flag=1;t0=0;P1=0xff;TR1=0;}}}void display(uchar aa,uchar bb,uchar cc,uchar ba,uchar sh,uchar g){dula=1;P0=table[aa];dula=0;P0=0xff; wela=1;P0=0xfe; wela=0; delay(1); dula=1;P0=table[bb]; dula=0;P0=0xff; wela=1;P0=0xfd; wela=0; delay(1); dula=1;P0=table[cc]; dula=0;P0=0xff; wela=1;P0=0xfb; wela=0; delay(1); dula=1;P0=table[ba]; dula=0;P0=0xff; wela=1;P0=0xf7; wela=0; delay(1); dula=1;P0=table[sh]; dula=0;P0=0xff; wela=1;P0=0xef; wela=0; delay(1); dula=1;P0=table[g]; dula=0;P0=0xff; wela=1;P0=0xdf;wela=0;delay(1);}Lesson5-2#include<reg52.h>#define uint unsigned int#define uchar unsigned char sbit d1=P1^0;sbit dula=P2^6;sbit wela=P2^7;sbit key1=P3^4;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; uchar num;void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void main(){wela=1;P0=0xfe;wela=0;P3=0xff;while(1){if(key1==0){delay(5);if(key1==0){d1=0;num++;if(num==10)num=0;}while(!key1);delay(5);while(!key1);}elsed1=1;dula=1;P0=table[num];dula=0;}}Lesson5-3#include<reg52.h>#define uint unsigned int#define uchar unsigned char sbit dula=P2^6;sbit wela=P2^7;sbit key1=P3^4;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0}; uchar num,temp,num1; void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}uchar keyscan();void display(uchar aa); void main(){num=17;dula=1;P0=0;dula=0;wela=1;P0=0xc0;wela=0;while(1){display(keyscan());}}void display(uchar aa){dula=1;P0=table[aa-1];dula=0;}uchar keyscan(){P3=0xfe;temp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P3;temp=temp&0xf0;while(temp!=0xf0){temp=P3;switch(temp){Case 0xee:num=1;break;case 0xde:num=2;break;case 0xbe:num=3;break;case 0x7e:num=4;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}}}P3=0xfd;temp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P3;temp=temp&0xf0; while(temp!=0xf0) {temp=P3;switch(temp){case 0xed:num=5;break;case 0xdd:num=6;break;case 0xbd:num=7;break;case 0x7d:num=8;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}}}P3=0xfb;temp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P3;temp=temp&0xf0; while(temp!=0xf0) {temp=P3;switch(temp){case 0xeb:num=9;break;case 0xdb:num=10;break;case 0xbb:num=11;break;case 0x7b:num=12;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}}}P3=0xf7;temp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P3;temp=temp&0xf0; while(temp!=0xf0) {temp=P3;switch(temp){case 0xe7:num=13;break;case 0xd7:num=14;break;case 0xb7:num=15;break;case 0x77:num=16;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}}}return num;}Lesson6-1#include<reg52.h>sbit csda=P3^2;sbit wr=P3^6;void main(){csda=0;wr=0;P0=0;while(1);}Lesson6-2#include<reg52.h>#define uchar unsigned char #define uint unsigned int sbit wr=P3^6;sbit rd=P3^7;void delay(uint z){uint t1,y;for(t1=z;t1>0;t1--)for(y=110;y>0;y--);}void init();void start();void main(){init();while(1){start();delay(20);rd=0;delay(10);rd=1;delay(10);}}void init(){P0=0;}void start(){wr=1;wr=0;wr=1;}Lesson7#include<reg52.h>unsigned char flag,a;void main(){TMOD=0x20;//设置定时器1为工作方式2 TH1=0xfd;TL1=0xfd;TR1=1;REN=1;SM0=0;SM1=1;EA=1;ES=1;while(1){/* if(RI==1){RI=0;P1=SBUF;}*/if(flag==1){ES=0;flag=0;SBUF='1';//28;while(!TI);TI=0;SBUF='2';//28;while(!TI);TI=0;SBUF='3';//28;while(!TI);TI=0;ES=1;}}}void ser() interrupt 4{RI=0;// P1=SBUF;a=SBUF;flag=1;}Lesson8#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar code table[]="I LIKE MCU!";uchar code table1[]=""; sbit lcden=P3^4;sbit lcdrs=P3^5;sbit dula=P2^6;sbit wela=P2^7;uchar num;void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);} void write_(uchar ){lcdrs=0;P0=;delay(5);lcden=1;delay(5);lcden=0;}void write_data(uchar date) {lcdrs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0;}void init(){dula=0;wela=0;lcden=0;write_(0x38);write_(0x0e);write_(0x06);write_(0x01);write_(0x80+0x10);}void main(){init();for(num=0;num<11;num++) {write_data(table[num]);delay(20);}// write_(1);write_(0x80+0x53);for(num=0;num<13;num++) {write_data(table1[num]);delay(20);}for(num=0;num<16;num++) {write_(0x18);delay(20);}while(1);}Lesson9#include<reg52.h>#define uchar unsigned char sbit sda=P2^0;sbit scl=P2^1;uchar a;void delay(){ ;; }void start() //开始信号{sda=1;delay();scl=1;delay();sda=0;delay();}void stop() //停止{sda=0;delay();scl=1;delay();sda=1;delay();}void respons() //应答{uchar i;scl=1;delay();while((sda==1)&&(i<250))i++; scl=0;delay();}void init(){sda=1;delay();scl=1;delay();}void write_byte(uchar date) {uchar i,temp;temp=date;for(i=0;i<8;i++){temp=temp<<1;scl=0;delay();sda=CY;delay();scl=1;delay();// scl=0;// delay();}scl=0;delay();sda=1;delay();}uchar read_byte(){uchar i,k;scl=0;delay();sda=1;delay();for(i=0;i<8;i++){scl=1;delay();k=(k<<1)|sda;scl=0;delay();}return k;}void delay1(uchar x){uchar a,b;for(a=x;a>0;a--)for(b=100;b>0;b--);}void write_add(uchar address,uchar date) {start();write_byte(0xa0);respons();write_byte(address);respons();write_byte(date);respons();stop();}uchar read_add(uchar address){uchar date;start();write_byte(0xa0);respons();write_byte(address);respons();start();write_byte(0xa1);respons();date=read_byte();stop();return date; }void main(){init();write_add(23,0xaa);delay1(100);P1=read_add(23);while(1);}Lesson10#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit dula=P2^6;sbit wela=P2^7;sbit rs=P3^5;sbit lcden=P3^4;sbit s1=P3^0;sbit s2=P3^1;sbit s3=P3^2;sbit rd=P3^7;uchar count,s1num;char miao,shi,fen;uchar code table[]=" 2007-7-30 MON"; uchar code table1[]=" 00:00:00";void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void write_(uchar ){rs=0;lcden=0;P0=;delay(5);lcden=1;delay(5);lcden=0;}void write_date(uchar date) {rs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;}void init(){uchar num;dula=0;wela=0;lcden=0;// fen=59;// miao=53;// shi=23;write_(0x38);write_(0x0c);write_(0x06);write_(0x01);write_(0x80);for(num=0;num<15;num++) {write_date(table[num]);delay(5);}write_(0x80+0x40);for(num=0;num<12;num++) {write_date(table1[num]);delay(5);}TMOD=0x01;TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;ET0=1;TR0=1; }void write_sfm(uchar add,uchar date) {uchar shi,ge;shi=date/10;ge=date%10;write_(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);}void keyscan(){rd=0;if(s1==0){delay(5);if(s1==0){s1num++;while(!s1);if(s1num==1){TR0=0;write_(0x80+0x40+10);write_(0x0f);}}if(s1num==2){write_(0x80+0x40+7);}if(s1num==3){write_(0x80+0x40+4);}if(s1num==4){s1num=0;write_(0x0c);TR0=1;}}if(s1num!=0){if(s2==0){delay(5);if(s2==0){while(!s2);if(s1num==1){miao++;if(miao==60)miao=0;write_sfm(10,miao); write_(0x80+0x40+10); }if(s1num==2){fen++;if(fen==60)fen=0;write_sfm(7,fen); write_(0x80+0x40+7); }if(s1num==3){shi++;if(shi==24)shi=0;write_sfm(4,shi); write_(0x80+0x40+4); }}}if(s3==0) {delay(5);if(s3==0){while(!s3);if(s1num==1){/* if(miao==0){miao=59;write_sfm(10,miao); write_(0x80+0x40+10); }*/miao--;if(miao==-1)miao=59;write_sfm(10,miao); write_(0x80+0x40+10); }if(s1num==2){fen--;if(fen==-1)fen=59;write_sfm(7,fen); write_(0x80+0x40+7); }if(s1num==3){shi--;if(shi==-1)shi=23;write_sfm(4,shi); write_(0x80+0x40+4); }}}}}void main(){init();while(1){keyscan();}// while(1);}void timer0() interrupt 1 {TH0=(65536-50000)/256;TL0=(65536-50000)%256; count++;if(count==18){count=0;miao++;if(miao==60){miao=0;fen++;if(fen==60){fen=0;shi++;if(shi==24){shi=0;}write_sfm(4,shi);}write_sfm(7,fen);}write_sfm(10,miao);}}Lesson11---shizhong.c #include<reg52.h>#include<define.h>void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void didi(){beep=0;delay(50);beep=1;delay(100);beep=0;delay(50);beep=1;}void write_(uchar ){rs=0;lcden=0;P0=;delay(5);lcden=1;delay(5);lcden=0;}void write_date(uchar date) {rs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;}void init(){uchar num;EA=1;EX0=1;IT0=1;dula=0;wela=0;lcden=0;// set_time();set_alarm(14,13,10);write_ds(0x0B,0x26);read_ds(0x0c);// fen=59;// miao=53;// shi=23;write_(0x38);write_(0x0c);write_(0x06);write_(0x01);write_(0x80);for(num=0;num<15;num++){write_date(table[num]);delay(5);}write_(0x80+0x40);for(num=0;num<12;num++){write_date(table1[num]);delay(5);}}void write_sfm(uchar add,uchar date) {uchar shi,ge;shi=date/10;ge=date%10;write_(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge); }void keyscan(){rd=0;if(flag1==1){if(s2==0){delay(5);if(s2==0){while(!s2);flag1=0;}}if(s3==0){delay(5);if(s3==0){while(!s3);flag1=0;}}}if(s1==0){delay(5);if(s1==0){ s1num++;flag=1;flag1=0;while(!s1);if(s1num==1){TR0=0;write_(0x80+0x40+10); write_(0x0f);}}if(s1num==2){write_(0x80+0x40+7); }if(s1num==3){write_(0x80+0x40+4); }if(s1num==4){s1num=0;write_(0x0c);flag=0;write_ds(0,miao); write_ds(2,fen);write_ds(4,shi);}}if(s1num!=0){if(s2==0){delay(1);if(s2==0){while(!s2);if(s1num==1){miao++;if(miao==60)miao=0;write_sfm(10,miao); write_(0x80+0x40+10); }if(s1num==2){fen++;if(fen==60)fen=0;write_sfm(7,fen); write_(0x80+0x40+7); }if(s1num==3){shi++;if(shi==24)shi=0;write_sfm(4,shi); write_(0x80+0x40+4); }}}if(s3==0) {delay(1);if(s3==0){while(!s3);if(s1num==1){/* if(miao==0){miao=59;write_sfm(10,miao); write_(0x80+0x40+10); }*/miao--;if(miao==-1)miao=59;write_sfm(10,miao); write_(0x80+0x40+10); }if(s1num==2){if(fen==-1)fen=59;write_sfm(7,fen);write_(0x80+0x40+7);}if(s1num==3){shi--;if(shi==-1)shi=23;write_sfm(4,shi);write_(0x80+0x40+4);}}}}}void write_ds(uchar add,uchar date) {dscs=0;dsas=1;dsds=1;dsrw=1;P0=add;dsas=0;dsrw=0;P0=date;dsrw=1;dsas=1;dscs=1;}uchar read_ds(uchar add){uchar ds_date;dsas=1;dsds=1;dsrw=1;dscs=0;P0=add;dsas=0;dsds=0;P0=0xff;ds_date=P0;dsas=1;dscs=1;return ds_date;}void set_time(){write_ds(4,10);write_ds(2,32);}void set_alarm(uchar ashi,uchar afen,uchar amiao) {write_ds(1,amiao);write_ds(3,afen);write_ds(5,ashi);}void main(){init();while(1){keyscan();if(flag1==1)didi();if(flag==0){miao=read_ds(0);fen=read_ds(2);shi=read_ds(4);write_sfm(10,miao);write_sfm(7,fen);write_sfm(4,shi);}}}void exter() interrupt 0 { uchar c;flag1=1;c=read_ds(0x0c);}。