📄 fs511.l
字号:
590 <02> setb fs511,sk
591 028B 46 E3 10 or register,#1<<bitn
592 <02> endm
593 <02> dly
594 028E FF nop
595 028F FF nop
596 0290 FF nop
597 0291 FF nop
598 <02> endm
599 <02> clrb fs511,sk
600 0292 56 E3 EF and register,#0ffh-(1<<bitn)
601 <02> endm
602 <02> dly
603 0295 FF nop
604 0296 FF nop
605 0297 FF nop
606 0298 FF nop
607 <02> endm
608 <01> endm
609 <01> setb fs511,di
610 0299 46 E3 20 or register,#1<<bitn
611 <01> endm
612 <01> dly
613 029C FF nop
614 029D FF nop
615 029E FF nop
616 029F FF nop
617 <01> endm
618 <01> sk_pls
619 <02> setb fs511,sk
620 02A0 46 E3 10 or register,#1<<bitn
621 <02> endm
622 <02> dly
623 02A3 FF nop
624 02A4 FF nop
625 02A5 FF nop
626 02A6 FF nop
627 <02> endm
628 <02> clrb fs511,sk
629 02A7 56 E3 EF and register,#0ffh-(1<<bitn)
630 <02> endm
631 <02> dly
632 02AA FF nop
633 02AB FF nop
634 02AC FF nop
635 02AD FF nop
636 <02> endm
637 <01> endm
638 02AE F6 01 A5 call get_a_byte
639 02B1 19 48 ld ad_data,r1
640 02B3 F6 01 A5 call get_a_byte
641 02B6 19 49 ld ad_data+1,r1
642 02B8 F6 01 A5 call get_a_byte
643 02BB 19 4A ld ad_data+2,r1
644
645 <01> setb fs511,cs
646 02BD 46 E3 08 or register,#1<<bitn
647 <01> endm
648 <01> clrb fs511,di
649 02C0 56 E3 DF and register,#0ffh-(1<<bitn)
650 <01> endm
651 <01> dly
652 02C3 FF nop
653 02C4 FF nop
654 02C5 FF nop
655 02C6 FF nop
656 <01> endm
657 02C7 AF ret
658 ;---------------------------------------;
659 02C8 get_ad_average_data:
660 02C8 F6 02 4E call get_ad_convert_data
661 02CB CF rcf
662 02CC 10 4A rlc ad_data+2
663 02CE 10 49 rlc ad_data+1
664 02D0 10 48 rlc ad_data
665 02D2 CF rcf
666 02D3 10 4A rlc ad_data+2
667 02D5 10 49 rlc ad_data+1
668 02D7 10 48 rlc ad_data
669 02D9 FB 0A jr nc,normal_proess
670 02DB 60 48 com ad_data ;negative number
671 02DD 60 49 com ad_data+1
672 02DF 06 49 01 add ad_data+1,#1
673 02E2 16 48 00 adc ad_data,#0
674 02E5 normal_proess:
675 02E5 E4 3C 3E ld buf7_h,buf6_h
676 02E8 E4 3D 3F ld buf7_l,buf6_l
677 02EB E4 3A 3C ld buf6_h,buf5_h
678 02EE E4 3B 3D ld buf6_l,buf5_l
679 02F1 E4 38 3A ld buf5_h,buf4_h
680 02F4 E4 39 3B ld buf5_l,buf4_l
681 02F7 E4 36 38 ld buf4_h,buf3_h
682 02FA E4 37 39 ld buf4_l,buf3_l
683 02FD E4 34 36 ld buf3_h,buf2_h
684 0300 E4 35 37 ld buf3_l,buf2_l
685 0303 E4 32 34 ld buf2_h,buf1_h
686 0306 E4 33 35 ld buf2_l,buf1_l
687 0309 E4 30 32 ld buf1_h,buf0_h
688 030C E4 31 33 ld buf1_l,buf0_l
689 030F E4 48 30 ld buf0_h,ad_data
690 0312 E4 49 31 ld buf0_l,ad_data+1
691
692 0315 B0 C7 clr r7
693 0317 B0 40 clr data_h
694 0319 B0 41 clr data_l
695 031B CF rcf
696 031C 04 3F 41 add data_l,buf7_l
697 031F 14 3E 40 adc data_h,buf7_h
698 0322 16 C7 00 adc r7,#0
699 0325 04 3D 41 add data_l,buf6_l
700 0328 14 3C 40 adc data_h,buf6_h
701 032B 16 C7 00 adc r7,#0
702 032E 04 3B 41 add data_l,buf5_l
703 0331 14 3A 40 adc data_h,buf5_h
704 0334 16 C7 00 adc r7,#0
705 0337 04 39 41 add data_l,buf4_l
706 033A 14 38 40 adc data_h,buf4_h
707 033D 16 C7 00 adc r7,#0
708 0340 04 37 41 add data_l,buf3_l
709 0343 14 36 40 adc data_h,buf3_h
710 0346 16 C7 00 adc r7,#0
711 0349 04 35 41 add data_l,buf2_l
712 034C 14 34 40 adc data_h,buf2_h
713 034F 16 C7 00 adc r7,#0
714 0352 04 33 41 add data_l,buf1_l
715 0355 14 32 40 adc data_h,buf1_h
716 0358 16 C7 00 adc r7,#0
717 035B 04 31 41 add data_l,buf0_l
718 035E 14 30 40 adc data_h,buf0_h
719 0361 16 C7 00 adc r7,#0
720 0364 70 C8 push r8
721 0366 8C 03 ld r8,#3
722 0368 div4:
723 0368 CF rcf
724 0369 C0 C7 rrc r7
725 036B C0 40 rrc data_h
726 036D C0 41 rrc data_l
727 036F 00 C8 dec r8
728 0371 EB F5 jr nz,div4
729 0373 50 C8 pop r8
730 0375 AF ret
731 ;---------------------------------------;
732 0376 repeat_get_ad_data:
733 0376 E4 42 44 ld data2_h,data1_h
734 0379 E4 43 45 ld data2_l,data1_l
735 037C E4 40 42 ld data1_h,data_h
736 037F E4 41 43 ld data1_l,data_l
737 0382 get_ad_stable_data:
738 0382 F6 02 C8 call get_ad_average_data
739 0385 A4 42 40 cp data_h,data1_h
740 0388 EB EC jr nz,repeat_get_ad_data
741 038A A4 43 41 cp data_l,data1_l
742 038D EB E7 jr nz,repeat_get_ad_data
743 038F A4 44 40 cp data_h,data2_h
744 0392 EB E2 jr nz,repeat_get_ad_data
745 0394 A4 45 41 cp data_l,data2_l
746 0397 EB DD jr nz,repeat_get_ad_data
747 0399 AF ret
748 ;---------------------------------------;
749 039A clear_data_buf:
750 039A B0 40 clr data_h
751 039C B0 41 clr data_l
752 039E B0 42 clr data1_h
753 03A0 B0 43 clr data1_l
754 03A2 B0 44 clr data2_h
755 03A4 B0 45 clr data2_l
756 03A6 AF ret
757 03A7 get_scale_zero:
758 03A7 F6 03 9A call clear_data_buf
759 03AA F6 03 82 call get_ad_stable_data
760 03AD E4 40 46 ld zero_h,data_h
761 03B0 E4 41 47 ld zero_l,data_l
762 03B3 AF ret
763
764 ;---------------------------------------;
765 ;Gain=Cal_Weight/(Weight_AD-Zero)
766 ;---------------------------------------;
767 03B4 calcul_gain:
768 03B4 F6 03 9A call clear_data_buf
769 03B7 F6 03 82 call get_ad_stable_data
770 03BA E4 40 50 ld bufa_h,data_h
771 03BD E4 41 51 ld bufa_l,data_l
772 03C0 E4 46 52 ld bufb_h,zero_h
773 03C3 E4 47 53 ld bufb_l,zero_l
774 03C6 F6 04 57 call int_sub ;Weight_AD-Zero
775 03C9 E4 50 52 ld bufb_h,bufa_h
776 03CC E4 51 53 ld bufb_l,bufa_l
777 03CF E6 50 13 ld bufa_h,#13h ;eg:Cal_Weight=5000g
778 03D2 E6 51 88 ld bufa_l,#88h ;define at eeprom
779 03D5 8C 04 ld r8,#4
780 03D7 F6 04 D1 call int_div ;Cal_Weight/(Weight_AD-Zero)
781 03DA E4 54 58 ld gain_h,bufc_h
782 03DD E4 55 59 ld gain_l,bufc_l
783 03E0 AF ret
784 ;---------------------------------------;
785 ;Count=(Weight_AD-Zero)*Gain*10
786 ;Weight=(Weight_AD-Zero)*Gain
787 ;1 g=10 data
788 ;---------------------------------------;
789 03E1 calcul_count:
790 03E1 E4 58 50 ld bufa_h,gain_h
791 03E4 E4 59 51 ld bufa_l,gain_l
792 03E7 1C 0A ld r1,#10
793 03E9 F6 04 87 call int_mul16x8 ;gain*10
794 03EC 8C 08 ld r8,#8
795 03EE calcul_count_loop1:
796 03EE CF rcf
797 03EF 10 C1 rlc r1
798 03F1 10 51 rlc bufa_l
799 03F3 10 50 rlc bufa_h
800 03F5 00 C8 dec r8
801 03F7 EB F5 jr nz,calcul_count_loop1
802 03F9 E4 50 56 ld temp_h,bufa_h
803 03FC E4 51 57 ld temp_l,bufa_l
804 03FF E4 40 50 ld bufa_h,data_h
805 0402 E4 41 51 ld bufa_l,data_l
806 0405 E4 46 52 ld bufb_h,zero_h
807 0408 E4 47 53 ld bufb_l,zero_l
808 040B F6 04 76 call int_cmp_a_b
809 <01> tmb r0,7
810 040E 76 C0 80 tm register,#1<<bitn
811 <01> endm
812 0411 6B 0C jr z,calcul_count_l1
813 0413 E4 40 52 ld bufb_h,data_h
814 0416 E4 41 53 ld bufb_l,data_l
815 0419 E4 46 50 ld bufa_h,zero_h
816 041C E4 47 51 ld bufa_l,zero_l
817 041F calcul_count_l1:
818 041F F6 04 57 call int_sub ;Weight_AD-Zero
819 ;ld bufb_h,gain_h
820 ;ld bufb_l,gain_l
821 0422 E4 56 52 ld bufb_h,temp_h
822 0425 E4 57 53 ld bufb_l,temp_l
823 0428 F6 04 AB call int_mul16x16 ;(Weight_AD-Zero)*Gain*10
824 042B 8C 04 ld r8,#4
825 042D calcul_count_loop2:
826 042D CF rcf ;result=result*16
827 042E 10 53 rlc bufb_l
828 0430 10 52 rlc bufb_h
829 0432 10 51 rlc bufa_l
830 0434 10 50 rlc bufa_h
831 0436 00 C8 dec r8
832 0438 EB F3 jr nz,calcul_count_loop2
833 043A A6 52 80 cp bufb_h,#80h
834 043D 7B 06 jr c,count_no_round
835 043F 06 51 01 add bufa_l,#1
836 0442 16 50 00 adc bufa_h,#0
837 0445 count_no_round:
838 0445 E4 50 5A ld count_h,bufa_h
839 0448 E4 51 5B ld count_l,bufa_l
840 044B A8 50 ld r10,bufa_h
841 044D B8 51 ld r11,bufa_l
842 044F AF ret
843 ;---------------------------------------;
844 ;bufa(int)+bufb(int)=bufa(int)
845 ;---------------------------------------;
846 0450 int_add:
847 0450 04 53 51 add bufa_l,bufb_l
848 0453 14 52 50 adc bufa_h,bufb_h
849 0456 AF ret
850 ;---------------------------------------;
851 ;bufa(int)-bufb(int)=bufa(int)
852 ;---------------------------------------;
853 0457 int_sub:
854 0457 24 53 51 sub bufa_l,bufb_l
855 045A 34 52 50 sbc bufa_h,bufb_h
856 045D AF ret
857 ;---------------------------------------;
858 ;add for mul,result at bufa
859 ;---------------------------------------;
860 045E int_add_for_mul:
861 045E 04 55 51 add bufa_l,bufc_l
862 0461 14 54 50 adc bufa_h,bufc_h
863 0464 AF ret
864 ;---------------------------------------;
865 ;bufb(int)-bufa(int) => r0(result)
866 ;---------------------------------------;
867 0465 int_cmp_b_a:
868 0465 70 52 push bufb_h
869 0467 70 53 push bufb_l
870 0469 24 51 53 sub bufb_l,bufa_l
871 046C 34 50 52 sbc bufb_h,bufa_h
872 046F 08 52 ld r0,bufb_h
873 0471 50 53 pop bufb_l
874 0473 50 52 pop bufb_h
875 0475 AF ret
876 ;---------------------------------------;
877 ;bufa(int)-bufb(int) => r0(result)
878 ;---------------------------------------;
879 0476 int_cmp_a_b:
880 0476 70 50 push bufa_h
881 0478 70 51 push bufa_l
882 047A 24 53 51 sub bufa_l,bufb_l
883 047D 34 52 50 sbc bufa_h,bufb_h
884 0480 08 50 ld r0,bufa_h
885 0482 50 51 pop bufa_l
886 0484 50 50 pop bufa_h
887 0486 AF ret
888 ;---------------------------------------;
889 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -