超过460,000+ 应用技术资源下载
doc

简单时钟源程序

  • 1星
  • 日期: 2018-09-10
  • 大小: 43KB
  • 所需积分:1分
  • 下载次数:
  • favicon收藏
  • rep举报
  • 分享
  • free评论
标签: 源程序

简单时钟源程序,感兴趣的可以看看。

文档内容节选

简单时钟 2009年07月24日 星期五 618 PM 文件名称:271ASM 程序功能:简单时钟 程序初始化 定义存放计时单元地址              BUF    EQU   30H                3033H连续4个字节存放显示器数据       HOUR   EQU   34H                存放小时变量       MIN    EQU   35H                存放分钟变量       SEC    EQU   36H                存放秒钟变量     ......

简单时钟 2009年07月24日 星期五 6:18 P.M. |;------------------------------------------------------------------| |----- | |;文件名称:27-1.ASM | |;程序功能:简单时钟 | |;------------------------------------------------------------------| |---- | | | |;---------------------------- 程序初始化 ------------------------- | |; 定义存放计时单元地址        | |      BUF    EQU   30H                | |;30~33H连续4个字节存放显示器数据 | |      HOUR   EQU   34H                ;存放小时变量 | |      MIN    EQU   35H                ;存放分钟变量 | |      SEC    EQU   36H                ;存放秒钟变量 | |      DEDA   EQU   37H                ;存放5 ms 计数值 | |     | |;按键输入引脚定义 | |      K1     EQU   P2.4               ;按键K1引脚定义 | |      K2     EQU   P2.5               ;按键K2引脚定义 | |      K3     EQU   P2.6               ;按键K3引脚定义 | |      K4     EQU   P2.7               ;按键K4引脚定义 | |;蜂鸣器和指示灯引脚定义 | |      SPK    EQU   P3.4               ;蜂鸣器控制信号 | |      WLED EQU    P1.0               ;工作指示灯引脚定义 | |;程序开始执行地址 | |      ORG          0H                 ;程序代码由地址0开始执行 | |      JMP          MAIN | |      ORG          0BH                ;定时器T0中断地址设置 | |      JMP          TO_SRV | |;----------------------------- 主程序---------------------------- | | | |MAIN:                              | |      ACALL        BZ                  ;蜂鸣器连续两次鸣响一声 | |      ACALL        BZ          | |      ACALL        LED_BL              ;LED 闪动,表示程序开始执行 | |      ACALL        INIT                ;初始变化量 | |      ACALL        INIT_TIMER          ;设置定时器 | | | |;加载显示器初始值数据 | |      MOV          A, #0C0H | |      MOV          P0, A    | | | |;无穷循环 | |LOOP:                                  ;无穷循环 | |      ACALL         CONV                ;转换 时时 分分 数据 | |      ACALL         DISP                ;扫描显示 | |;---------------------------- | |      JB            K1, M1               ;未按下K1键则继续扫描 | |      ACALL         LED_BL               ;LED闪动 | |      ACALL         SET_TIME             ;设置目前时间 | |      AJMP           LOOP                ;跳转到LOOP处执行 | |;----------------------------   | |M1: JB            K2, M2               ;未按下K2键则继续扫描 | |      AJMP           LOOP                ;跳转到LOOP处执行 | |;---------------------------- | |M2: JB            K3, M3               ;未按下K3键则继续扫描 | |      AJMP           LOOP                ;跳转到LOOP处执行 | |;---------------------------- | |M3: JB            K4, M4               ;未按下K4键则继续扫描 | |      AJMP           LOOP                ;跳转到LOOP处执行 | |;----------------------------    | |M4: | |      AJMP           LOOP                 ;跳转到LOOP处执行 | | | |;-------------------------- 定时中断模块 ------------------------ | |;定时器T0模式0计时 | |INIT_TIMER:                            ;初始化定时器 | |      MOV          TMOD,#00000000B       ;设置定时器T0工作模式为0 | |      MOV          IE, #10000010B       ;启用定时器T0中断产生 | |      MOV          TL0, #(8192-5000)MOD 32 ;加载初始值 | |      MOV          TH0, #(8192-5000)/32     | |      SETB         TR0                   ;启动定时器T0开始计时 | |      RET | |;---------------------- | |; 中断服务程序 | |TO_SRV:                                | |;中断服务子程序                      | |      PUSH         ACC                   ;A值压入堆栈 | |      MOV          TL0, #(8192-5000)MOD 32 ;重加载初始值 | |      MOV          TH0, #(8192-5000)/32    | |      INC          DEDA                  ;加1    | |;秒输出 | |      MOV          A, DEDA | |      CJNE         A,#200,TT1           ;是否1s到了 | |      MOV          DEDA, #0            ;计数值清除为0 | |      CPL          WLED                 ;LED灯亮灭变换 | |      INC          SEC                  ;秒计数加1 | |      MOV          A, SEC | |      CJNE         A, #60, TT1          ;是否1min到了 | |;分输出 | |      INC          MIN                  ;分计数加1 | |      MOV          SEC, #0             ;秒计数清除为0 | |      MOV          A, MIN | |      CJNE         A, #60, TT1          ;是否1h到了 | |;时输出 | |      INC          HOUR                 ;小时计数加1 | |      MOV          MIN, #0             ;分计数清除为0 | |      MOV          A, HOUR | |      CJNE         A,#24, TT1           ;是否24h到了 | |      MOV          SEC, #0             ;秒钟变量清除为0 | |      MOV          MIN, #0             ;分钟变量清除为0 | |      MOV          HOUR, #0             ;小时变量清除为0 | |TT1: | |      POP          ACC                  ;将A值由堆栈取出 | |      RETI | | | |;-------------------------- 转换十进制模块----------------------- | | | |CONV:                                  ; 转换十进制子程序 | |;转换小时数据 | |     MOV           DPTR,#TABLE           ;存表 | |     MOV           A, HOUR | |     MOV           B, #10 | |     DIV           AB | |     MOVC          A, @A+DPTR             ;查表转换 | |     MOV           BUF, A | |     MOV           A, B | |     MOVC          A, @A+DPTR             ;查表转换 | |     MOV           BUF+1, A | |;转换分钟数据 | |     MOV           A, MIN | |     MOV           B, #10 | |     DIV           AB | |     MOVC          A, @A+DPTR              ;查表转换 | |     MOV           BUF+2, A | |     MOV           A, B | |     MOVC          A, @A+DPTR              ;查表转换 | |     MOV           BUF+3, A | |     RET | | | |;字型数据编码表 | |TABLE: | |     DB 0C0H,0F9H,0A4H,0B0H | |     DB 99H,92H,82H,0F8H | |     DB 80H,90H,88H,83H | |     DB 0C6H,0A1H,86H,8EH | | | | | |;------------------------- 扫描显示模块 ------------------------- | | | |DISP:                                 ;扫描显示子程序 | |     MOV          R0, #BUF             ;指向显示器显示缓冲区起始地 | |址 | |     MOV          R2, #4               ;循环执行4次 | |     MOV          ACC, #11110111b       ;加载扫描信号初值11110111B | |S1: | |     PUSH         ACC | |     MOV          A, @R0                ;取出显示器数据 | |     MOV          P0, A                 ;由P0送出一位显示器数据 | |     POP          ACC | |     MOV          P2, ACC               ;由P2送出扫描输出信号 | |     MOV          R5, #4                ;延迟一会儿 | |     ACALL        DELAY1ms_R5 | |;改变扫描码 EX:XXXX1011 | |     RR           A                     ;A向右移动一位 | |     INC          R0                    ;显示器显示缓冲区地址加1 | |     DJNZ         R2, S1                ;判断是否继续执行循环 | |     RET | | | | | |;-------------------------- 调整时间模块 ------------------------ | | | |SET_TIME:                              ;设置目前时间 | |     CLR           TR0                  ;定时器暂停 | |     MOV           SEC, #0              ;秒钟变量清除为0 | |L0: | |     ACALL         DISP                 ;扫描显示 | | | |     JB            K2, L1              ;未按下K2键则继续扫描 | |     JNB           K2, $               ;有按下则等待放开来 | |;K2小时调整   | |     INC           HOUR                  ;小时计数加1 | |     MOV           A, HOUR | |     CJNE          A,#24, L11           ;是否24h到了 | |     MOV           HOUR, #0             ;小时变量清除为0 | |L11: | |     ACALL         CONV                 ;转换显示数据 | |     ACALL         DISP                 ;扫描显示 | |     JMP           L0                   ;跳转到L0处执行 | | | |L1: JB           K3, L2               ;未按下K3键则继续扫描 | |     JNB           K3,$                 ;有按下则等待放开 | |;K3分钟调整. | |     INC           MIN                   ;分钟计数加1 | |     MOV           A, MIN | |     CJNE          A,#60, L21            ;是否60 min到了 | |     MOV           MIN, #0               ;分钟变量清除为0 | |L21: | |     ACALL         CONV                  ;转换显示数据 | |     ACALL         DISP                  ;扫描显示 | |     JMP            L0                   ;跳转到L0处执行 | | | |L2: JB           K4,L0                 ;未按下K4键则继续扫描 | |     JNB           K4, $                 ;有按下则等待放开 | |     ACALL         BZ                    ;蜂鸣器鸣响一声 | |;K4设置完成 | |     ACALL         LED_BL                ;LED闪动 | |     SETB          TR0                   ;启动定时器 | |     RET | |;----------------------- 计时单元清零模块 ------------------------ | |INIT:                                  | |;计时单元清零子程序            | |     MOV          DEDA,   #0             ;5ms计数值清除为0 | |     MOV          SEC,     #0            ;秒钟变量清除为0 | |     MOV          MIN,     #0            ;分钟变量清除为0 | |     MOV          HOUR,   #0             ;小时变量清除为0 | |     RET | |;------------------------- 蜂鸣器鸣响模块------------------------- | | | |BZ:                                     ;蜂鸣器鸣响子程序 | |      MOV         R6, #250 | |B1: ACALL       DEX | |      CPL         SPK | |      DJNZ        R6, B1 | |      MOV         R5, #100 | |      ACALL       DELAY1ms_R5                   ;延迟100ms | |      RET | | | |;-------------------------- LED闪动模块 ---------------------------| | | |LED_BL:                               ;工作指示灯闪烁子程序 | |      MOV         R4,#6 | |LE1: CPL        WLED                  ;位反向 | |      MOV         R5,#50 | |      ACALL       DELAY1ms_R5                 ;延迟50ms | |      DJNZ        R4, LE1               | |      RET | |;------------------------------ 延时模块 --------------------------| | | |DELAY1ms_R5:                             ;总延迟时间 1ms×5R | |       | |     DLY1: MOV   R6, #10      | |     DLY2: MOV   R7, #50     | |           DJNZ   R7, $         | |           DJNZ   R6, DLY2      | |           DJNZ   R5, DLY1                  | |           RET | |;---------------------------- 短暂延时模块 | |------------------------- | | | |DEX: MOV      R7,#180                  ;短暂延时子程序 | |DE1: NOP | |      DJNZ        R7, DE1 | |      RET | |;--------------------------------------- | |      END                                  ;程序结束 |
更多简介内容

推荐帖子

源程序编译问题
求教:本人刚刚接触Win CE,以前也没有什么开发经验。现在自己摸索着想把6410原来BSP包里的某个驱动源程序重新编译,生成一个名字不一样但功能一样的新驱动程序,然后通过万用表看接口的高低电平来对照着源程序学习。现在源程序(复制的)、def文件、sources文件都已经弄好了,注册表项也改好了,就是不知道在VS2005中如何来编译源程序(C语言),望各位前辈指教! 已经试过建C++空项目,然后
whplcyz 嵌入式系统编程
都来说说你如何阅读源程序吧
说起来,很少正儿八经读别人的源程序。经常是喜欢直接看时序,看电路图,然后直接写程序,当然写的都是简单程序。后来工作所需,写串口,网络通信程序,当然没办法完全自己写,就参考例程,在原基础上调试增减API。虽说要改首先要看懂。但那些基本上都是简单的程序――虽然相关设置可能很复杂。最近做USB,要弄一个MAXIM KIT(处理器型号MAXQ1050)的USB设备。依我的理解,它是在裸机上用程序实现了US
辛昕 【编程基础】
宠物连连看-----源程序奉上
分类信息 - 分享VI程序代码名称宠物连连看适用平台LabVIEW8.2.x 代码作者极限天子版权所有极限天子原创/转载原创代码代码版本控制1.1功能说明借鉴经典阿达连连看制作。 含初级、中级、高级选择 每级含11关,各关不同变化(其中最后两级的变化还没做好,等待中) 含有提示洗牌功能 修改了排行榜功能 …… 解压缩后直接运行main.vi。 # v. N" e: l( F3 u.
cscl 【测试/测量】
DSP流水灯源程序
本帖最后由 Jacktang 于 2019-11-7 22:01 编辑 DSP流水灯源程序 /* * main.c * *  Created on: 2019-9-2 *      Author: CZQ */     /* * GPxDAT   置1高电平            置0低电平 * GPxSET    1---高       
Jacktang 【微控制器 MCU】
TMS320F28335程序SVPWM源程序
单片机源程序如下: //***************************************************/ //文件名:SVPWM.c //功能:调用28335内部PWM模块生成SVPWM输出测试文件 //说明:输入信息采用结构体,使用时改变结构体指针即可改变输入信号。 //     InitSvpwm()函数提供PWM模块初始化以及相应PIE中断的配置。 // 
Jacktang 【DSP 与 ARM 处理器】
TMS320F28335程序SVPWM源程序
单片机源程序如下: //***************************************************/ //文件名:SVPWM.c //功能:调用28335内部PWM模块生成SVPWM输出测试文件 //说明:输入信息采用结构体,使用时改变结构体指针即可改变输入信号。 //     InitSvpwm()函数提供PWM模块初始化以及相应PIE中断的配置。 // 
Aguilera 【微控制器 MCU】

评论


个人中心

意见反馈

求资源

回顶部

下载专区


TI最新应用解决方案

工业电子 汽车电子 个人电子

搜索下次设计所需的
TI 器件

● 目前在售器件有45,000款
● 6.99美元标准运费,不受时间和地点限制
● 无最低起订量要求

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

EEWorld电子技术资料下载——分享有价值的资料

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved
$(function(){ var appid = $(".select li a").data("channel"); $(".select li a").click(function(){ var appid = $(this).data("channel"); $('.select dt').html($(this).html()); $('#channel').val(appid); }) })