完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
是否使用中断依据实际情况而定,并非是做题惯性,题目要求用就用,这种思想不适合工作。
下面两段程序都能实现实验二的要求,对比学习一下吧: 中断方式: /***************************************************************************** * 头文件 * *****************************************************************************/ #include "8052.h" #define LSA P1_5 #define LSB P1_6 #define LSC P1_7 void EXINT0() __interrupt 0; void EXINT1() __interrupt 2; void delay(unsigned int ms) // { unsigned int x; unsigned int y; for(x=ms;x>0;x--) for(y=110;y>0;y--) ; } /***************************************************************************** * 初始化和功能函数 * *****************************************************************************/ void sys_init(void) { LSA=0; LSB=0; LSC=0; IT0=0; IT1=0; EA=1; EX0=1; EX1=1; } void Up2Down(int x) { int i, j; unsigned char sel=0x7f; for(i=0;i for(j=0;j<8;j++) { P0 = sel; delay(125); sel=sel>>1|0x80; } sel=0x7f; } } void EXINT0() __interrupt 0 { Up2Down(1); } void EXINT1() __interrupt 2 { P0=0xFF; delay(125); P0=0x7F; delay(125); P0=0xFF; delay(125); } /***************************************************************************** * 主函数 * *****************************************************************************/ void main(void) { sys_init(); while(1) { P0=0x7F; } } 查询方式: /***************************************************************************** *头文件 * *****************************************************************************/ #include "8052.h" #define LSA P1_5 #define LSB P1_6 #define LSC P1_7 #define KEY0 P3_2 #define KEY1 P3_3 void delay(unsigned int ms) //延时 { unsigned int x; unsigned int y; for(x=ms;x>0;x--) for(y=110;y>0;y--) ; } /***************************************************************************** *初始化和功能函数 * *****************************************************************************/ void sys_init(void) { LSA=0; LSB=0; LSC=0; } void left(int x) { int i, j; unsigned char sel=0x7f; for(i=0;i for(j=0;j<8;j++) { P0 = sel; delay(125); sel=sel>>1|0x80; } sel=0x7f; } } /***************************************************************************** * 主函数 * *****************************************************************************/ void main(void) { sys_init(); while(1) { if(KEY0&&KEY1) { P0=0x7F; } if(KEY0==0) { left(1); } if(KEY1==0) { P0=0xFF; delay(125); P0=0x7F; delay(125); P0=0xFF; delay(125); } } } |
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2955 浏览 16 评论
3455 浏览 1 评论
8987 浏览 16 评论
4050 浏览 18 评论
1102浏览 3评论
570浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
568浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2301浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1857浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 07:01 , Processed in 1.099040 second(s), Total 81, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号