哪位大神帮我修改一下程序 汇编的 用89c51单片机设计秒表系统 从00到99秒

求大神帮帮修改一下错误的,谢谢!!_程序设计吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:10,010贴子:
求大神帮帮修改一下错误的,谢谢!!收藏
#include&iostream.h&#include&stdlib.h&#include&stdio.h&#include&string.h&#define NULL 0int k=1,k2=0,k3=0,cout,
//k记录注册人数,k2记录答案数,k3通过人数struct answer1 *headan=NULL ,*p2=NULL;struct score *heads=NULL,*p3=NULL;struct infor{ char num[20];
//身份证号 char name[15];
unsigned int num2; struct infor *
//注册号}h={19,"111","H",1,NULL};struct infor *p1=NULL,*head=&h;
//head记录首位置,p1记录末位置struct answer1{ char ans[20]; struct answer1 *};struct score{ char * struct score *};void answer(int num2);void login(){ void regidit(void); void mainpage(void); char name_[20]; struct infor *px= if (head!=NULL){ cout&&"姓名:"&& cin&&name_; while(px!=NULL && strcmp(name_,px-&name)!=0)
px=px-& } if(head==NULL || px==NULL)
cout&&"您还没有注册,请先注册!"&&
regidit(); } cout&&"接下来您可以:1.答题
2.回到主界面"&&endl&&"请选择(1/2)"; cin&& if(ch==1)
answer(px-&num2); else if(ch==2) mainpage(); else
cout&&"输入无效! 请重新输入"&&
if(ch==1) answer(px-&num2);
else if(ch==2) mainpage();
}while(ch!=1&&ch!=2); }}void regidit(){ void mainpage(); int a,
//a=age,ch=chose char num_[20]; struct infor *p,* cout&&"=============注册界面============="&& cout&&"请输入您的年龄:"; p1= px= cin&&a; if(a&=18) {
p=(struct infor*)malloc(sizeof(struct infor));
cout&&"请输入您的身份证号:";
cin&&num_;
while(px!=NULL&&px-&next!=NULL)
if(strcmp(px-&num,num_)!=0)
cout&&"您已注册过"&&
if(px-&next==NULL)
strcpy(p-&num,num_);
cout&&"输入您的姓名:";
p-&num2=k;
cout&&"您的注册号是:"&&k&&
head-&next=NULL;
p1-&next=p;
p-&next=NULL;
else mainpage(); } else cout&&endl&&"! 您的年龄不满18岁,不能通过注册 !"; cout&&"接下来您可以:1.登录
2.回到主界面"&&endl&&"请选择(1/2)"; cin&& if(ch==1) login(); else if(ch==2) mainpage(); else
cout&&"输入无效! 请重新输入";
if(ch==1) login();
else if(ch==2) mainpage();
}while(ch!=1&&ch!=2);}void mainpage();void answer(int num2){ struct answer1 *p; cout&&"==========答题界面=========="&& cout&&"您的注册号是:"&&num2&&endl&&"您的答案:"; p=(struct answer1 *)malloc(sizeof (struct answer1)); cin&&p-& k2++; p-&num=num2; if(k2==1)
headan-&next=NULL;
p2-&next=p;
p-&next=NULL; } cout&&"接下来您可以回到主界面(b)或退出本程序(e)"&&endl&&"请选择(b/e)"; cin&&x; if(x=='b'||x=='B') mainpage(); else if(x=='e'||x=='E') exit(0); else
cout&&"输入无效! 请重新输入"&&
if(x=='b'||x=='B') mainpage();
else if(x=='e'||x=='E') exit(0);
}while(1);}void read(){ void mainpage(); unsigned int num_; struct answer1 * struct score *p,* px= cout&&"==========评阅界面=========="&& cout&&"请输入要评阅答案的答题者注册号:"; cin&&num_; while(px!=NULL && px-&num!=num_) px=px-&
//find if(px-&next!=NULL)
p-&num=px-&
while(px-&next!=NULL)
if(py-&num!=px-&num)
cout&&"这份答案已被评阅过"&&
if(py-&next==NULL)
cout&&px-&ans&&endl&&"请打分:";
p=(struct score *)malloc(sizeof (struct score));
cout&&"评语:"&&
heads-&next=NULL;
p3-&next=p;
p-&next=NULL;
else mainpage();
cout&&"要继续评阅下一份答案吗?(Y/N)"&&
}while(x!='N'&& x!='n'&& p-&next!=NULL); }void count(){ struct score *p; p= cout&&"==========报名及通过率统计界面=========="&& while(p!=NULL) {
if((p-&mark)&=60) k3++; } cout&&"共有"&&k&&"人注册报名"&&endl&&"其中"&&k2&&"人已提交答案"&& cout&&"通过率为:"&&(float)(k3/k2);}void newadmi(){}void page1(){ cout&&"++++++++++++++++++++++++++++++++++++++++++++++++++++"&& cout&&"在本界面您可以:"&&endl&&"1.注册
2.登录"&&endl&&"(请选择(1/2))"&& cin&& if(ch==1)
regidit(); } else if(ch==2) login(); else
cout&&"输入无效! 请重新输入"&&
if(ch==1) regidit();
else if(ch==2) login();
}while(ch!=1&&ch!=2);}void page2(){ cout&&"++++++++++++++++++++++++++++++++++++++++++++++++++++"&& cout&&"在本界面您可以:"&&endl&&"1.登录
2.问答题评阅
3.报名及通过率统计
4.申请新管理员"&&endl&&"请选择(1/2/3/4)"&& cin&& if(ch==1) login(); else if(ch==2) read();
else if(ch==3) count(); else if(ch==4) newadmi(); else
cout&&"输入无效! 请重新输入"&&
if(ch==1) login();
else if(ch==2) read();
else if(ch==3) count();
}while(ch!=1&&ch!=2&&ch!=3);}void mainpage(){
cout&&"==***&&@@@@@#####欢迎使用奥运会志愿者报名系统#####@@@@@&&***=="&& cout&&"A.进入志愿者报名界面"&&endl&&"B.进入管理员界面"&&endl&&"请选择(A/B)"&& if((x=getchar())=='A'||x=='a') page1(); else if(x=='B'||x=='b') page2(); else
cout&&"输入无效! 请重新输入"&&
x=getchar();
if(x=='A'||x=='a') page1();
else if(x=='B'||x=='b') page2();
}while(x!='A'&&x!='a'&&x!='B'&&x!='b');}void main(){ mainpage();}
4推荐个鬼服,武尊玩不?新服开启!无托无福利号~下载微端送首冲
........0.0
错了一个地方。其实还好。
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或用AT89C51单片机设计一个秒表:00.0~99.9
用AT89C51单片机设计一个秒表:00.0~99.9
用AT89C51单片机设计一个秒表:00.0~99.9
求用单片机设计一个秒表AT89C51要求1、按开关K1秒表开始计时,再按开关K1计时暂停,按开关K2秒表复位。2、如果可以的话顺便发一下电路图3、最好是用汇编编写程序谢谢 悬赏分:100 - 解决时间: 08:33 最佳答案:;--------------------------------------------------------;说明:为了提高精度,下列给出的程序和电路图,比楼主提出的要求; 增加了一位0.1秒的计数和显示功能,所以计时范围是00.0~99.9s。; 想得到以00~99形式计秒的网友,可到原题的网址去看原文。;--------------------------------------------------------;汇编程序如下。;使用T0定时方式1,每隔50ms中断一次,用于修改时间及显示;使用外部中断0、1,用于控制启动和清零;========================================================ORG 0000HAJMP MAINORG 0003HAJMP X0_INTORG 000BHAJMP T0_INTORG 0013HAJMP X1_INTMAIN:MOV TMOD,#01H ;T0定时方式1MOV TH0, #() / 256 ;50ms@12MHzMOV TL0, #() MOD 256;SETB TR0SETB ET0 ;开启定时中断SETB EX0SETB EX1SETB EA ;开中断MOV R1, #0 ;0~99秒计数MOV R2, #0 ;0.1秒数MOV R7, #1 ;50ms计数
MOV P0, #0C0H ;显示00.0MOV P2, #0C0Hmov p1, #0C0HLOOP:SJMP LOOP;-----------------------------------------------------------DELAY: ;延时子程序.MOV R4, #0DJNZ R4, $DJNZ R4, $RET;-----------------------------------------------------------X0_INT: ;启动/停止CPL F0RETI;-----------------------------------------------------------X1_INT: ;清零MOV R1, #0MOV P0, #0C0HMOV P2, #0C0Hmov p1, #0C0HRETI;-----------------------------------------------------------T0_INT: ;50ms中断执行一次.MOV TL0, #() MOD 256;MOV TH0, #() / 256 ;50ms@12MHzDJNZ R7, T0_END ;中断不到20次.MOV R7, #2 ;#20JNB F0, T0_ENDmov a, r2add a, #1da aanl a, #0fhmov r2, ajnz dispMOV A, R1ADD A, #1DA AMOV R1, Adisp:mov a, r2anl a, #0fhmovc a, @a+查出段码mov p1,显示0.1秒MOV A, R1ANL A, #0FHMOV DPTR, #TABMOVC A, @A+DPTR ;查出段码MOV P2, A ;显示个位MOV A, R1SWAP AANL A, #0FHMOVC A, @A+DPTR ;查出段码MOV P0, A ;显示十位T0_END:RETI;-----------------------------------------------------------TAB:DB 0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8H,80H, 90HEND;===========================================================;PROTEUS仿真截图如下:
图片链接:;-----------------------------------------------------------提问者对于答案的评价:非常感谢原题网址:;-----------------------------------------------------------
;===========================================================基于单片机89C51的计时器或秒表AT89C51单片机秒表程序和电路图要求就是这样的了:1. 设计中采用的单片机以及显示器件,用AT89C51设计一个2位LED数码显示秒表,有开始,停止,清零就行。2. 设计实现的基本功能,系统显示时间为00~99秒,每秒自动加1,设计越简单越好。求电路图和相应的C程序,过程最好能详细些,因为要写实验报告~~希望高手帮忙 悬赏分:50 - 解决时间: 15:51 原题网址:就是那个秒表问题,你给我的设计,汇编程序能改成C吗?悬赏分:0 - 解决时间: 18:25 原题网址://---------------------------------------------下面是00-99秒计数的语言C程序。
#include&reg52.h&#include&intrins.h&unsigned char i,unsigned char code table[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99,0x92, 0x82, 0xf8, 0x80, 0x90};//---------------------------------------------void main( ){TMOD = 0x01; //;T0定时方式1TH0 = () / 256; //;50ms@12MHzTL0 = () % 256;TR0 = 1; //;定时器初始化结束ET0 = 1; //;开启定时中断EX0 = 1;EX1 = 1;EA = 1; i = 0; j = 0;P0 = 0xC0;P2 = 0xC0;while(1);}//---------------------------------------------void timer0(void) interrupt 1{TL0 = () % 256;TH0 = () / 256; //;50ms@12MHzif (k) {j++;if (j == 20) {j = 0;i++;if (i == 100) i = 0;P0 = table[i / 10];P2 = table[i % 10];} } }//---------------------------------------------void x0(void) interrupt 0{k = ~k;}//---------------------------------------------void x1(void) interrupt 2{i = 0; j = 0;P0 = 0xC0;P2 = 0xC0;}//--------------------------------------------- 提问者对于答案的评价:谢谢啦
发表评论:
馆藏&107326
TA的推荐TA的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&c语言程序,求大神帮忙修改一下,万分感谢。_百度知道求助。有没有大神帮忙修改一下程序段_汇编吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:29,504贴子:
求助。有没有大神帮忙修改一下程序段收藏
做了一道汇编语言的题,出了点小错误,我不会修改,楼下放图
如何修改这段程序,能让输入一个大于13的数输出为错误。
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或【提问】求大神帮我修改下一段程序_编程吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:147,378贴子:
【提问】求大神帮我修改下一段程序收藏
求大神用指针帮我把这段程序里的一个数组改成两个数组,谢了哈。 源代码如下: #include&stdio.h&#include&time.h&main(){ int i,a[5],*p,q; srand(time(NULL)); p=a; for(i=0;i&5;i++) {
a[i]=rand()%100; } for(i=0;i&5;i++) {
printf(" %d",a[i]); } printf("\n"); for(i=0;i&5/2;i++) {
*(p+i)=*(p+4-i);
*(p+4-i)=q; } for(i=0;i&5;i++) {
printf(" %d",a[i]); } printf("\n");}
新手完全看不懂
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或}

我要回帖

更多关于 89c51单片机 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信