单片机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++;//中断次数}
单片机10秒倒计时c语言汇编语 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)