wenhailang 发表于 2007-12-14 23:03 侃单片机 ←返回版面
45楼: 我写的,很简单,快了反而更准确51汇编的
你们先看下程序,我用的是AT89S52,我之前也是用了一个10K上拉后再接一个1K电阻到I/O口,后来不行,只接10K就可以了;因为接1K后硬件有延时,单片机读数就慢了.就有一个小问题,我用的是国产的编码开关才几块钱一个,所以在顺时钟转时有时会有反弹现像(编码开关本身机械问题).基本上是可以用的.有疑问的,可与我联系286044494,助人为快乐之本,技术人员更应该相互帮助.以下是菜单设置的一小节:
M_LOOP2: JB MENU_KEY,M_LOOP4 ;判断编码开关有无按下 LCALL DEL5MS JB MENU_KEY,M_LOOP4 LCALL KEY_MZ ;调用按键音 JNB MENU_KEY,$ ;用软件实现正跳变触发 LJMP NEXT0 M_LOOP4: JB A_KEY,M_LOOP2 ;判断编码开关是否旋转 LCALL DEL5MS JB A_KEY,M_LOOP2 JNB A_KEY,$ ;用软件实现正跳变触发 JNB B_KEY,C_W ;编码开关有动作,再判断为顺时针方向(0)还是逆时针方向(1)转动 LCALL KEY_MZ ;调用按键音 DEC R0 CJNE R0,#00H,CC_W MOV R0,#17 CC_W: AJMP M_LOOP3 ;跳转到显示处理 C_W: LCALL KEY_MZ ;调用按键音 INC R0 CJNE R0,#18,M_LOOP3 MOV R0,#1 M_LOOP3: LJMP BEGIN ;循环扫描
wenhailang前辈,能否用AT89S52写一段流水灯程序发上来让我等学习 也就是编码开关右转时,流水灯右移;编码开关左转时,流水灯左移.期待着
|