微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机10秒倒计时c语言汇编语言程序

单片机10秒倒计时c语言汇编语言程序

时间:11-30 来源:互联网 点击:
(2)数码管动态显示(循环显示0~9,时间间隔为1秒,1秒的时间间隔用定时器T0实现)
汇编语言:ORG 0000HAJMP MAINORG 000BHAJMP INTT0ORG 0030HMAIN:CLR P2.7MOV DPTR,#TABCLR AMOV R2,#0HMOV R3,#0HMOV TMOD,#01HMOV TH0,#4CHMOV TL0,#00HSETB EASETB ET0SETB TR0HERE: CJNE R2,#14H,HEREMOV R2,#0HPUSH ACCMOVC A,@A+DPTRMOV P0,APOP ACCINC AINC R3    CJNE R3,#0AH,HEREMOV R3,#00H        ;此处用DJNZ 更方便,只不过R3的初始值;要设置为0AH,同时取消INC R3指令(此行上面第二行)   CLR AAJMP HEREORG 80HINTT0:MOV TH0,#4CHMOV TL0,#00HINC R2RETITAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HEND②C语言#include#define uint unsigned int#define uchar unsigned charsbit p27=P2^7;//数码管位选端定义uchar c,i;//数码管译码表unsigned char code NumDecode[] ={0XC0,//;00XF9,//;10XA4,//;20XB0,//;30X99,//;40X92,//;50X82,//;60XF8,//;70X80,//;80X90,//;9};void main(){i=0;//10秒计时设置c=0;//中断次数计数p27=1;//数码管位选端关闭TMOD=1;//设置定时器0为工作方式1TH0=(65536-46080)/256;//定时50ms高8位求模TL0=(65536-46080)%256;//定时50ms低8位求余EA=1;//开总中断ET0=1;//定时器0中断TR0=1;//启动定时器0while(1){if(c==20)//50ms中断20次{c=0;i++;//倒计时总数每秒减1}if(i<10){p27=0;//数码管位选选通P0=NumDecode[i];//显示数据}else  //循环计时设置{i=0;}}}void timer0() interrupt 1//定时器0中断入口{TH0=(65536-46080)/256;//定时器重新赋初值TL0=(65536-46080)%256;c++;//中断次数}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top