TIMER0在MODE2的计数工作方式程序

发布者:平凡幸福最新更新时间:2018-01-11 来源: eefocus关键字:TIMER0  MODE2  计数  工作方式 手机看文章 扫描二维码
随时随地手机看文章

TIMER0在MODE2的计数工作方式程序

          org        00h
           jmp        star

start:     MOV         sp,#60h           ;设置堆栈
           MOV         scon,#50h         ;UART工作在mode1
           MOV         tmod,#20h         ;timer1工作在mode2
           MOV         th1,#0e6h         ;波特率为1200
           setb       tr1               ;启动timer1
sCAN0:     MOV         r3,#0f7h          ;键盘扫描初始值
scan:      jb         ri,uart           ;是否有接收tnc的数据
           MOV         r1,#00h           ;table取码指针
scan1:     MOV         a,r3              ;输出行扫描
           MOV         p1,a
           MOV         a,p1
           MOV         r4,a
           setb       c
           MOV         r5,#04h           ;扫描4列
l1:        rlc        a
           jnc        keyin             ;c=0表有键按下
           inc        r1                ;c不等于0,未按则取码指针加1
           djnz       r5,l1             ;扫描下一列
           MOV         a,r3              ;扫描下一行
           setb       c          
           rrc        a 
           MOV         r3,a
           jc         scan1             ;4行扫描完?
           jmp        scan0
keyin:     MOV         r7,#200           ;消除抖动
d2:        MOV         r6,#248
           djnz       r6,$
           djnz       r7,d2
d3:        MOV         a,p1              ;按键放开否?
           xrl        a,r4
           jz         d3  
           MOV         dptr,#table
           MOV c       a,@a+dptr
           MOV         20h,a             ;暂存入ram(20h)
           xrl        a,#45h            ;是否按"e"键
           jz         trans1            ;是则发送一串字码
           MOV         a,20h             ;将按键值ascii码发送给tnc
           MOV         sbuf,a
           cpl        a 
           MOV         p2,a              ;输出至p2显示
           jmp        scan0
uart:      MOV         a,sbuf            ;接收到tnc的数据,将sbuf载入aCC
           cpl        a 
           MOV         p0,a              ;输出至p0显示
           clr        ri                ;清除ri
           jmp        scan
trans1:    MOV         r0,#00h           ;设定本机站号
           MOV         r1,#09
           call       again
           call       delay
           jmp        trans2
trans2:    MOV         r0,#09            ;设定呼叫站号
           MOV         r1,#15
           call       again
           call       delay
           jmp        trans3
trans3:    MOV         r0,#24            ;设定交谈模式
           MOV         r1,#05
           call       again
           call       delay
           jmp        scan0
again:     MOV         a,r0              ;至table1取码
           MOV         dptr,#table1
           MOV c       a,@a+dptr
           MOV         sbuf,a            ;发送给tnc
           cpl        a
           MOV         p2,a              ;输出至p2显示
wait:      jbc        ti,ok             ;发送完毕否?是则跳至ok并清除ti
           jmp        wait
ok:        inc        r0                ;取下一个码
           djnz       r1,again      
           ret
delay:     MOV         r5,#200
d1:        MOV         r6,#248
           djnz       r6,$   
           djnz       r5,d1
           ret 
table:     db         30h,31h,32h,33h    ;0,1,2,3     
           db         34h,35h,36h,37h    ;4,5,6,7
           db         38h,39h,41h,42h    ;8,9,a,b
           db         43h,44h,45h,0dh    ;c,d,e,entet
table1:    db         4dh,59h,20h,42h    ;mybu2FP
           db         56h,32h,46h,50h,0dh
           db         4dh,59h,43h,41h,4ch,4ch    ;mycall bu2fp-1(enter)
           db         20h,42h,56h,32h,46h,50h
           db         2dh,31h,0dh
           db         43h,4fh,4eh,56h,0dh        ;conv(enter)
           end


关键字:TIMER0  MODE2  计数  工作方式 引用地址:TIMER0在MODE2的计数工作方式程序

上一篇:74922应用于键盘控制及六位数显示程序
下一篇:ADC0809输入电压转成LED灯显示程序

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

中断-timer0
使用timer0中断,将LED灯闪烁 Init.c /* * init.c: 进行一些初始化 */ #include s3c24xx.h void disable_watch_dog(void); void clock_init(void); void memsetup(void); void copy_steppingstone_to_sdram(void); void init_led(void); void timer0_init(void); void init_irq(void); void delay(int n) { int i; for(i=0;i n;i++); } /* * 关闭WA
[单片机]
stm32f103r6仿真计数器程序+Proteus
单片机源程序如下: #include stm32f10x.h #include Delay.h #include smg.h #include sys.h #include timer.h #include led.h #include fmq.h #include key.h #include stm32f10x_tim.h uint16_t table = { /* 0, 1, 2, 3, 4, 5, 6, 7, 8, */ 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, /* 9, A, B, C,
[单片机]
stm32f103r6仿真<font color='red'>计数</font>器程序+Proteus
8052计数器(定时器0和计数器1)
之前由于同学的一个小实验,需要用到频率计,所以自己想搞一个出来,于是网上找了很多资料,简单的有用8052单片机的定时器和计数器的结合来测其信号的频率,还有的是c8051f的捕捉功能,想来想去,还是想用用自己熟悉的8052的计数器功能,毕竟平时都用的是定时器功能,很少用到计数器功能,以便更加深入的运用8052,以后再学习C8051F。 搞了好几天,时钟没有结果,计数功能倒是有了,但是不能在1s的时间里计数,很是头痛,忽然有一天,我的同学找到了一段代码,说是可以运行的,于是我拿过来,把LED改了一改,烧录之后,还真的成功了!甚是大喜啊!这里附上源代码; /*******http://hi.baidu.com/zhangjiay
[单片机]
8052<font color='red'>计数</font>器(定时器0和<font color='red'>计数</font>器1)
STM32F4_TIM基本延时(计数原理)
Ⅰ、 概述 STM32 的 TIM 定时器分为三类:基本定时器、通用定时器和高级定时器。从分类来看就知道 STM32 的定时器功能是非常强大的,但是,功能强大了,软件配置定时器就相对复杂多了。很多初学者甚至工作了一段时间的人都不知道 STM32 最基本的计数原理。 虽然 STM32 定时器功能强大,也分了三类,但他们最基本的计数部分原理都是一样的,也就是我们常常使用的延时(或定时)多少 us 、 ms 等。 接下来我会 讲述关于STM32最基本的计数原理,详细讲述如何做到 ( 配置 ) 计数1us的延时,并提供实例代码供大家参考学习。 关于本文的更多详情请往下看。 Ⅱ、实例工程下载 笔者针对于初学者提供的例程都是去掉了
[单片机]
STM32F4_TIM基本延时(<font color='red'>计数</font>原理)
8.STC15W408AS单片机定时器/计数
一、定时器计数器简介 STC15W408AS只有定时器0和定时器2,工作工作位定时器或者计数器模式。定时器/计数器的核心部件是一个加法计数器,其本质是对脉冲进行计数。只是计数脉冲来源不同:如果计数脉冲来自系统时钟,则为定时方式,此时定时器/计数器每12个时钟或者每1个时钟得到一个计数脉冲,计数值加1;如果计数脉冲来自单片机外部引脚(T0为P3.4,T1为P3.5,T2为P3.1,T3为P0.7,T4为P0.5),则为计数方式,每来一个脉冲加1。 当定时器/计数器T0、T1及T2工作在定时模式时,特殊功能寄存器AUXR中的T0x12、T1x12和T2x12分别决定是系统时钟/12还是系统时钟/1(不分频)后让T0、T1和T2进行
[单片机]
8.STC15W408AS单片机定时器/<font color='red'>计数</font>器
TTL十进位计数器构成的分频器
TTL十进位计数器构成的分频器
[模拟电子]
TTL十进位<font color='red'>计数</font>器构成的分频器
实验2 中断和定时计数器实验
1.当单片机的INT0进入低电平触发方式,进入相应的中断服务程序,P0口做输出口,接8只发光二极管,点亮发光二级管,控制蜂鸣器响。当INT1为低电平时进入中断服务程序,发光二级管灭。 接线:将P0和JP1连接、P3和JP5连接 #include reg51.h #define uchar unsigned char #define uint unsigned int sbit beer = P1 ^5; //蜂鸣器 sbit button0 = P3 ^2; //独立按键3 sbit button1 = P3 ^3; //独立按键4 void int0() interrupt 0//外部中断0 { P0 =0;
[单片机]
单片机的两位计数
知识要点:理解数的概念 ;运行结果:数码管从00一直加到99 ;ANL 0FH就是把数据与00001111相与那么遇1得原来的数遇0则为0,结果是前面的4位变0, 后面的4位保留 ;P2.1 , P2.2分别是数码管控制位.CLR 则点亮 ORG 0000H;程序开始 LJMP MAIN; ORG 030H; MAIN:MOV 20H,#00H;20H单元送00 MOV A,20H; GOON:CLR C;进位CY置0这里的作用是当数字超过9要求进位时屏蔽进位, 意思永不进位 ANL A,#0FH;屏蔽A中的高4位 MOV DPTR,#TAB;查表 MOV
[单片机]
单片机的两位<font color='red'>计数</font>器
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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